请帮我注释这个算法

来源:百度知道 编辑:UC知道 时间:2024/05/21 22:56:20
main()
{
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\n",*p);p++;}
}
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;}
}
}

谢谢两位,请帮我详细注释这几行好吗?
{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;}

main()
{
int*p,i,a[10];
p=a;
for(i=0;i<10;i++)
scanf("%d",p++);
p=a;
sort(p,10);//这个是自己定义的函数,函数原型在下面,作用是对p内的数进行排序
for(p=a,i=0;i<10;i++)
{printf("%d\n",*p);p++;}
}
//这个函数的作用是排序,x[]表示输入数据,n表示数据个数
//用代码上看,排序用的是【选择排序】算法
sort(int x[],int n)
{int i,j,k,t;
for(i=0;i<n-1;i++)//遍历x中的所有元素
{k=i;//令k=i
for(j=i+1;j<n;j++)//从i后面的开始找,如果发现有比x[k]大的,就记录最大的下标
if(x[j]>x[k])k=j;
if(k!=i)//如果下标变化了,则交换x[i]与x[k]的值
{t=x[i];x[i]=x[k];x[k]=t;}这里t是一个临时变量,目的是用来交换
}
}

main()
{
int*p,i,a[10];
p=a; //让p指针指向a数组的首地址
for(i=0;i<10;i++)
scanf("%d",p++); //给a数组输入值
p=a; //重新指向首地址(在给数组输入值的时候.指针变化了)
sort(p,10);//调用函数,给数组里的值排序
for(p=a,i=0;i<10;i++)
{printf("%d\n",*p);p++;} //输出排序后的数
}
//这个函数把数组重小到大排列
sort(int x[],int n)
{int i,j,k,t;
for(i=0;i<n-1;i++)
{k=