中易网

哪为高手帮忙详细解释下这个数组的运行逻辑!(C数组)

答案:2  悬赏:50  
解决时间 2021-04-28 06:10
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)
而是正常的从小到大的排列呀理解不了。
最佳答案
第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(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; } 这几句语句就是排序啊!!!这种在算法上叫做冒泡排序!! 如有疑问,请追问。
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
十七中初三年段最漂亮的女生是谁?
哪个能告我个身份证我要解防沉迷
刚刚18岁可以用这些美白自制面膜吗?
动漫连锁店卖什么?
应大地址在什么地方,想过去办事
英雄之城巴别之塔
求一本學漫畫的書
在学校里干什么最快乐?
在网上开店怎样开?
炉石传说游戏无法将你登陆至战网。请等待几分
魔兽世界的界面和画面可以自己设置吗?
太阳的温度最高有多高呀?
爱一个人真的什么事都要为她去做吗?
包头市广鑫达水泥制品有限责任公司这个地址在
闪翼拳皇1.3作弊码!!!速度,教我怎么弄!
推荐资讯
襄樊有什么地方卖的哪种减肥药好啊?
内蒙古经济较落后的市和贫困地区
我的CF突然不能进了,删除以后重新下载却下不
广州到龙华多少钱?
在水利站工作怎么样,事业编
怎样学习可以考上好的大学、。??
成都市高新区金桂路238号挨朝阳路口有多远
请教:急!急!急!显示器显示的信息上下、左
百家讲坛 讲水浒的主题音乐
小郭酒店用品总汇地址在哪,我要去那里办事
问几道英文的问题?
什么东西买的人知道,卖的人知道,用的人却不
手机登qq时,显示手机磁盘不足,清理后重新登
刺客的套装怎么选啊?