C语言从小到大排序问题

请问这三个空空都填什么,为什么呀?一般排序都是用两重循环完成了,今天突然看到一个这样的排序算法。主要是第二层循环和下面的if(i!=t)这个语句看的不是太明白。... 请问这三个空空都填什么,为什么呀?
一般排序都是用两重循环完成了,今天突然看到一个这样的排序算法。主要是第二层循环和下面的if(i!=t)这个语句看的不是太明白。
展开
 我来答
nionydas
2014-05-05 · TA获得超过459个赞
知道小有建树答主
回答量:272
采纳率:0%
帮助的人:347万
展开全部
第一个for循环是为了从a[0]开始遍历a数组 第2个for循环是从a[1]开始遍历。
t=i m=a[i],这是为了取得外层循环遍历的那个值m和下标i。

第1,2个孔是if的语句,if里面有个语句是m=a[j]了,那么要满足什么条件,才会执行这个语句和第2个空呢?第2个for循环是从a[1]开始到a[9],那么就是要把这9个值中选取1个值出来,下面的第2个if(t!=i) 很明显是把m当成中间值,进行1个变量交换,交换的值为a[i] a[t],所以第3个空填a[i]=a[t],这里是第1个for循环结束的最后1个语句。交换a[i]和a[t]的值,刚开始定义了t=i,如果if语句里面什么都不做的话,显然这样做是完全没意义的,所以语句2肯定是需要对t进行1个赋值,下面的if语句就好判断t和i的关系了,因此语句2填t=j,if语句里面的意思是m=a[j],t=j 可以发现与刚开始的t=i m=a[i]是不是很类似么,获得这个值以及它的下标,那满足什么条件才这么做?根据下面的if语句可以知道,和a[0]比较是为了获得a[1]-a[9]中的最小值,然后和a[0]比较,因此如果a[j]<a[i],就需要用1个下标t和值m来保存这个数。如果a[j]都比a[i]大,那么这个if语句里面的内容就不会执行,t也是等于i的,相当于什么没没做,第一个for循环下来,a[0]就是最小的值,直到遍历到a[8],反之交换a[0]和最小值a[j]的值。
所以3个空分别是:
1.a[j]<a[i];
2.t=j;
3.a[i]=a[t]
匿名用户
2014-05-05
展开全部
(1)m > a[j]
(2)t = j
(3)a[i] = a[t]
第二层循环主要是要找比a[i]小的数,if语句就是将这个比a[i]小的数替换位置,从而排序
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
扯淡书生
2014-05-05 · TA获得超过122个赞
知道小有建树答主
回答量:171
采纳率:0%
帮助的人:103万
展开全部
  1. a[j]<a[j+1];

  2. t=j;

  3. a[i]=a[t];


追问
我简单说一下为什么吗?
主要是第二层循环和下面的if(i!=t)这个语句看的不是太明白。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式