C语言从小到大排序问题
请问这三个空空都填什么,为什么呀?一般排序都是用两重循环完成了,今天突然看到一个这样的排序算法。主要是第二层循环和下面的if(i!=t)这个语句看的不是太明白。...
请问这三个空空都填什么,为什么呀?
一般排序都是用两重循环完成了,今天突然看到一个这样的排序算法。主要是第二层循环和下面的if(i!=t)这个语句看的不是太明白。 展开
一般排序都是用两重循环完成了,今天突然看到一个这样的排序算法。主要是第二层循环和下面的if(i!=t)这个语句看的不是太明白。 展开
3个回答
展开全部
第一个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]
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]小的数替换位置,从而排序
(2)t = j
(3)a[i] = a[t]
第二层循环主要是要找比a[i]小的数,if语句就是将这个比a[i]小的数替换位置,从而排序
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
a[j]<a[j+1];
t=j;
a[i]=a[t];
追问
我简单说一下为什么吗?
主要是第二层循环和下面的if(i!=t)这个语句看的不是太明白。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询