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]);
}
}
帮忙解析下
C语言基础排序问题
答案:1 悬赏:0
解决时间 2021-04-28 12:19
- 提问者网友:樱花树下最美的约定
- 2021-04-27 23:59
最佳答案
- 二级知识专家网友:山鬼偶尔也合群
- 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]); //输出 得到的排序后的值
}
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]); //输出 得到的排序后的值
}
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息!
大家都在看
推荐信息