#C语言#起泡排序法的总结

2018-06-18 04:20:47来源:未知 阅读 ()

新老客户大回馈,云服务器低至5折

新手小白,代码学习过程中总结一下起泡排序法。

起泡排序法的基本思路:每次将相邻的两个数进行比较,将小的调到前头。
若有6个数:9,8,5,4,2,0
第一次先将最前面的两个数8和9对调,第二次将第二个和第三个数(9和5对调)……如此一共进行五次,得到8,5,4,2,0,9的顺序。

可以看到,大数已沉底,而小数上升。最小的数0已向上浮起一个位置,经过一次比较已经得到最大的数9。

然后进行第二趟比较,对余下的五个数进行新一次的比较。(8,5,4,2,0)进行新一轮的比较,以便使第二大的数沉底。按以上方法进行第二次比较。得到第二大的数8。

按此规律,可以推知,对六个数要比较五次,才能使六个数按大小顺序排列。
第一趟要比较5次,第二趟比较4次……第五趟比较1次。
规律:如果有n个数,则要进行n-1次比较。在第一趟比较中药进行n-1次两两比较,在第j趟比较中要进行n-j次两两比较。
我将起泡排序写成函数

 1 #include<stdio.h>
 2 /*==========================================================
 3  *函数名称:main()
 4  *功    能:主函数
 5  *入口参数:
 6  *出口参数:
 7  *说    明:使用起泡法将给定的数组排序
 8  *==========================================================*/
 9 void main()
10 {
11     void qipao_paixu(int num[]);
12     int a[10]={655,23,56,2345,3897,36,478,31,90,208};
13     int i;
14     printf("原始序列:");
15     for(i=0;i<10;i++)
16         printf("%5d",a[i]);
17     printf("\n");
18     printf("起泡法排序\n");
19     qipao_paixu(a);
20     printf("排序后的序列:");
21     for(i=0;i<10;i++)
22         printf("%5d",a[i]);
23  
24 }
25 /*==========================================================
26  *函数名称:qipao_paixu()
27  *功    能:起泡排序
28  *入口参数:
29  *出口参数:
30  *说    明:对数组中的十个元素进行起泡排序
31  *==========================================================*/
32 void qipao_paixu(int num[])
33 {
34     int i,j,temp;
35     for(j=0;j<9;j++)//控制j趟比较
36         for(i=0;i<9-j;i++)//第j趟中,控制n-j次两两比较
37         {
38             if(num[i]>num[i+1])//判断序列中两两相邻数字大小
39             {
40                 temp=num[i];//小数向前放,大数沉底
41                 num[i]=num[i+1];
42                 num[i+1]=temp;
43             }
44  
45         }
46  
47 }

经codeblock编译运行

新手小白,还望多指正,以后常总结交流。

Bruce李

2016.6.6

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:舒适系统设计-功能模块生成模板-说明

下一篇:如何获取程序返回值,退出码,错误码