void sort(int array[] ,int n)
{
int t,k,i,j;
for(i=0;i<n-1;i++)
{
k=i;
for(j=i+1;j<=n-1;j++)
if(array[k]>array[j])k=j;
{t=array[k];array[k]=array[i];array[i]=t;}
}
}
main()
{
int a[10],i;
printf("enter the array\n");
for(i=0;i<10;i++)
scanf("%d",&a[i]);
sort(a,10);
printf("the sorted array: \n");
for(i=0;i<10;i++)
printf("%d ",a[i]);
printf("\n");
}
这道C语言是用选择法从小到大排列数字,小弟有一个不明白的地方,
if(array[k]>array[j])k=j;
{t=array[k];array[k]=array[i];array[i]=t;}
为什么要把J赋给K,我写成这样
if(array[k]>array[j]);
{t=array[k];array[k]=array[j];array[j]=t;}
最后也能实现,很多书上都是前面一种写法,为什么不能去掉呢,那不是更加简洁???
參考答案:i那个参数是多余的。
把for(i=0;i<n-1;i++)改成for(k=0;k<n-1;k++),去掉k=j,把t=array[k];array[k]=array[i];array[i]=t改成t=array[k];array[k]=array[j];array[j]=t,完全可以……