main()
{
int array[10];
int i,j,min,stmp;
for(i=0;i<10;i++) scanf("%d",&array[i]);
for(i=0;i<9;i++)
{
min=array[i];
for(j=i+1;j<10;j++)
if(min>array[j])
{
min=array[j];
stmp=array[i];
array[i]=array[j];
array[j]=stmp;
}
}
for(i=0;i<10;i++) printf("%d ",array[i]);
printf("\n");
}
输入10个数(20 30 50 25 32 15 65 98 33 16)
为什么输出的结果不是(20 30 25 32 15 50 65 33 16 98)
而是正常的从小到大的排列呀理解不了。
哪为高手帮忙详细解释下这个数组的运行逻辑!(C数组)
答案:2 悬赏:50
解决时间 2021-04-28 06:10
- 提问者网友:伪情浪人
- 2021-04-27 10:46
最佳答案
- 二级知识专家网友:转身→时光静好
- 2021-04-27 11:36
第1次循环时 i=1
for(j=i+1;j<10;j++)
if(min>array[j])
{
min=array[j];
stmp=array[i];
array[i]=array[j];
array[j]=stmp;
}
这个循环的作用是第1项和数组每一项比较大小 选出最小的放在第1位
外面还有for(i=0;i<9;i++) 针对i的大循环
也就是i=2,3,4,5,6...时都进行一次与后面数字比较大小的运算
当外面大循环也运行完之后 当然就是相当于把这一组数都比较了一遍啊
这个不难理解的 可以写一组数在纸上运行一下 相信你会明白这个道理
这个程序很经典哦~
for(j=i+1;j<10;j++)
if(min>array[j])
{
min=array[j];
stmp=array[i];
array[i]=array[j];
array[j]=stmp;
}
这个循环的作用是第1项和数组每一项比较大小 选出最小的放在第1位
外面还有for(i=0;i<9;i++) 针对i的大循环
也就是i=2,3,4,5,6...时都进行一次与后面数字比较大小的运算
当外面大循环也运行完之后 当然就是相当于把这一组数都比较了一遍啊
这个不难理解的 可以写一组数在纸上运行一下 相信你会明白这个道理
这个程序很经典哦~
全部回答
- 1楼网友:放肆的依賴
- 2021-04-27 12:06
你好!
for(i=0;i<9;i++)
{
min=array[i];
for(j=i+1;j<10;j++)
if(min>array[j])
{
min=array[j];
stmp=array[i];
array[i]=array[j];
array[j]=stmp;
}
这几句语句就是排序啊!!!这种在算法上叫做冒泡排序!!
如有疑问,请追问。
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯