C语言选择法排序函数的实现问题

我在看C语言程序设计是遇到一个问题,用选择法对数组中的5个整数按由小到大排序
#include
int main()
{
void sort(int array[],int n);
int a[5],i;
printf("Please input 5 numbers:\n");
for(i=0;i<5;i++)
scanf("%d",&a[i]);
sort(a,5);
printf("the sort array:\n");
for(i=0;i<5;i++)
printf("%d\t",a[i]);
printf("\n");
return 0;
}
这段代码没什么问题,主要是里面这个sort函数
这是书中给定的
void sort(int array[],int n)
{
int i,j,k,t;
for(i=0;i<n-1;i++)
{
k=i;

for(j=i+1;j<n;j++)
if(array[j]<array[k])
k=j;
t=array[k];array[k]=array[i];array[i]=t;
}
}

而我自己写的少了一个变量k,就不能实现这个功能了,不知道为什么
void sort(int array[],int n)
{
int i,j,t;
for(i=0;i<n-1;i++)
{

    for(j=i+1;j<n;j++)
        if(array[j]<array[i])

            t=array[j];
            array[j]=array[i];
            array[i]=t;
}

}

c

3个回答

选择排序,k是用来记录所选数据的下标。
数组中的5个整数按由小到大排序:第一次遍历就是找到5个数中最小的,k记录的就是这个数的下标

不知道说的是什么啊,看不懂

少了两个花括号,改为:
void sort(int array[],int n)
{
int i,j,t = 0;
for(i=0;i<n-1;i++)
{
for(j=i+1;j<n;j++)
{
if(array[j]<array[i])
{
t=array[j];
array[j]=array[i];
array[i]=t;
}

    }

}

}

u013251457
斝樂 这样改了就不是选择排序了,成了冒泡了
4 年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐