一段看不懂的c程序

来源:百度知道 编辑:UC知道 时间:2024/05/30 19:19:45
#include <stdio.h>
void main()
{
void sort(int x[],int n);
int * p,i,a[10];
p=a;
for(i=0,i<10,i++)
scanf("%d",p++);
p=a;
sort(p,10);
for(p=a,i=0;i<10,i++)
{printf("%d",* p);p++;}
}
void sort(int x[],int n)
{
int i,j,k,t;
for(i=0,i<n-1,i++)
{k=i;
for(j=i+1;j<n;j++)
if(x[j]>x[k]) k=j;
if(k!=i)
{t=x[i];x[i]=x[k];x[k]=t;}
}
}
sort函数那段有点看不懂,尤其是那个k!=i实在是不懂怎么加进来的,麻烦大家帮下。

那个k!=i是交换x[k]与x[i]条件!若条件不成立,就不会执行最后一步的交换{t=x[i],x[i]=x[k],x[k]=t;} x[k]数组下标的从0开始,x[j]数组下标从1开始!然后进行两两比较!

此为从大到小排序,if k!=i,说明后一个数比前一个大,需要前后两数交换.

如要从小到大排序.改动if(x[j]<x[k]) k=j;就行

同意以上二位观点。只是一个排序程序。