问题标题: 酷町堂:求排序解析(什么排序都行!!)!!!!!!

0
0

0
已采纳
汪恺恒
汪恺恒
中级启示者
中级启示者

sort排序

(要加include<algorithm>)

sort(数组名+1,数组名+1+数组元素个数);

 

冒泡排序

原序列:76 18 99 35 12(这里从小到大排)

第一趟:
76 18 99 35 12
76 18 99 12 35
76 18 12 99 35
76 12 18 99 35
12 76 18 99 35
此时确定了最小的数 12

第二趟:
12 76 18 99 35
12 76 18 35 99
12 76 18 35 99 (这里是35和18进行比较,不需要交换位置,18比35小)
12 18 76 35 99
第二趟确定了第2小的数

第三趟:
12 18 76 35 99
12 18 76 35 99
12 18 35 76 99
第三趟确定了第3小的数

第四趟:
12 18 35 76 99
12 18 35 76 99

这里对于5个数,需要4趟,每次确定第i小的数,放在最前面。

每趟把没排好序的序列里最大的(或者最小的)找出来,通过相邻两个数两两交换这种方式,像冒泡一样。

冒泡排序是一种稳定的排序,每次比较相邻两个数的大小,若要求逆序输出,前一个数如果大于后一个数则不用交换,否则交换两个数的顺序。总共进行n-1轮排序,第i轮比较n-i次。

循环写法
for(int i=1;i<=n-1;i++)//表示趟数,共n-1趟(确定n个数的顺序)
     for(int j=1;j<=n-i;j++)//每次确定第i大的数,放在后面,所以这里是n-i。
          if(a[j]>a[j+1])
               swap(a[j],a[j+1]);

 

0
我要回答