c语言选择排序算法中排序函数不执行是怎么回事?
问题描述:
select(data);被跳过
#include <stdio.h>
void swop(int a,int b)//换位
{
int temp;
if (a<b)
{
temp = a;
a = b;
b = temp;
}
}
void select(int data[])//排序
{
int i,j;
for (j=0;j<4;j++)
for (i=j+1;i<5;i++)
swop(data[i],data[j]);
}
void main()
{
int data[5]={10,30,21,3,6};
int i;
select(data);//这行被跳过
for (i=0;i<5;i++)
printf("%d ",data[i]);
}
答
交换函数的问题,修改见注释处,供参考:
#include <stdio.h>
void swop(int *a,int *b)//修改
{
int temp;
if (*a<*b) //修改
{
temp = *a; //修改
*a = *b; //修改
*b = temp; //修改
}
}
void select(int data[])//排序
{
int i,j;
for (j=0;j<4;j++)
for (i=j+1;i<5;i++)
swop(&data[i],&data[j]); //修改
}
void main()
{
int data[5]={10,30,21,3,6};
int i;
select(data);//这行被跳过
for (i=0;i<5;i++)
printf("%d ",data[i]);
}