C语言 数组中插入数字,并从大到小排列数组中数据。请问下面代码如何理解。谢谢!

2024-12-14 05:42:12
推荐回答(1个)
回答1:

先说你不懂之后的那些代码,这是标准的插入排序算法——
scanf("%d",&n); // 读入一个新的数字n

for(i=0;i<10;i++)
if(n>a[i]) //现在的数组a是从大到小排序的,所以如果发现有小于n的数组元素a[i],n就应该取代a[i]的位置

{for(s=9;s>=i;s--) a[s+1]=a[s]; //先把a[i]之后的元素全部后移一格,于是a[i+1]的值变成了a[i]的值,a[i+2]变成了先前a[i+1]的值,等等。

break;}
a[i]=n; //再把n赋值给a[i],一个新的插入就此完成。

再说前面的那一段,这里是对初始化完毕的、已经含有若干元素的数组做选择排序——
for(j=i+1;j<10;j++)
if(q
if(p!=i)如果现在p中的值,不再等于i,则下标互换位置。--〉这其实就是把找到的最大的数放在i位置。i之前的数字已经按照从大到小的次序排列完毕。
{
s=a[i];
a[i]=a[p];
a[p]=s;
}
printf("%d ",a[i]);
}