c语言排序找错

来源:百度知道 编辑:UC知道 时间:2024/09/21 03:16:59
#include "stdio.h"
void selection_sort(int array[],int k)
{
int i,j,m,t;
for(i=0;i<k;i++){//做第i趟排序(1≤i≤n-1)
m=i;
for(j=i+1;j<=k;j++)
if(array[j]<array[m])
m=j; //k记下目前找到的最小值所在的位置
if(m!=i){
t=array[i];
array[i]=array[m];
array[m]=t;
}
}
}
void main()
{
int n,a[100];
scanf("%d",&n);
for (int i=0;i<n;i++)
scanf("%d",&a[i]);
selection_sort(a,n);
printf("排序结果为:");
for (i=0;i<n;i++)
printf("%d ",a[i]);
}

看看这个到底怎么错了的。

选择排序啊,
这个for(i=0;i<k;i++){//做第i趟排序(1≤i≤n-1)
应改为
for(i=0;i<k-1;i++)

for(j=i+1;j<=k;j++)
应改为
for(j=i+1;j<k;j++)

这就像公式一样,应该牢记啊。

朋友,你把原题拿来吧,想帮你,但原题都不知道,怎么帮你啊