中易网

C语言基础排序问题

答案:1  悬赏:0  
解决时间 2021-04-28 12:19
  • 提问者网友:樱花树下最美的约定
  • 2021-04-27 23:59
main()
{
int i,j,p,q,s,a[10];
printf("\n input 10 numbers:\n");
for(i=0;i<10;i++)
scanf("%d",&a[i]);
for(i=0;i<10;i++){
p=i;q=a[i];
for(j=i+1;j<10;j++)
if(q<a[j]) { p=j;q=a[j]; }
if(i!=p)
{s=a[i];
a[i]=a[p];
a[p]=s; }
printf("%d",a[i]);
}
}



帮忙解析下
最佳答案
  • 二级知识专家网友:山鬼偶尔也合群
  • 2021-04-28 00:17
int i,j,p,q,s,a[10];
    printf("\n input 10 numbers:\n");
    for(i=0;i<10;i++)//将输入的数保存到a的数组中
    scanf("%d",&a[i]);
    for(i=0;i<10;i++)//循环遍历,这是第一个循环不比较大小。只是用来获取a数组中的i索引位置的数
    {
    p=i;q=a[i];    //将获取的数的索引和值分别保存到变量p 和q中
    
    for(j=i+1;j<10;j++)//循环遍历,这是第二个循环主要是循环比较大小,是从第一个循环中获取的数,循环和这个数后面的所有数进行比较
    if(q<a[j]) { p=j;q=a[j]; }  //判断,如果q(第一个循环保存下的值)小于现在j索引位置的值,则将索引和这个索引的值保存到p和q中
    if(i!=p)    //如果i不等于p,也就是说,程序经过了 p=j;q=a[j]  这段代码,则更换 数组中值的位置
    {s=a[i];    //先有s保存 a[i]值的值
    a[i]=a[p];    //将a[p]的值赋值给a[i]
    a[p]=s; }    //再将s保存的值赋给 a[p],,其实这三段代码就是利用第三个变量进行值的对换
    printf("%d",a[i]);  //输出 得到的排序后的值
    }
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息!
大家都在看
推荐信息