免费织梦模板,wordpress主题,web前端设计,建站教程,Photoshop教程,免费网站模板资源下载_微思考

冒泡排序举例-C语言

冒泡排序举例:
  1 #include <stdio.h>
  2 int main()
  3 {
  4     int i,j,t,LearnTime[10];
  5     printf("please enter 10 number :\n");
  6
  7     for(i=0;i<10;i++)
  8         scanf("%d",&LearnTime[i]);
  9
 10     for(j=0;j<9;j++)      //进行9次循环,进行9次比较
 11       for(i=0;i<9-j;i++)  //在每轮循环中进行9-j次循环
 12           if(LearnTime[i]>LearnTime[i+1])  //交换两个变量的值
 13           {
 14               t=LearnTime[i];
 15               LearnTime[i]=LearnTime[i+1];
 16               LearnTime[i+1]=t;
 17           }
 18     printf("the sorted number :\n");
 19     for(i=0;i<10;i++)
 20     printf("%d ",LearnTime[i]);
 21     return 0;
 22 }


实验楼原文

现在输入10个用户的有效学习时间,要求对它们按由小到大的顺序排序。

解题思路:这种问题是一个典型的排序问题,排序方法是一种重要且基本的算法,我们在此使用“冒泡排序法”,其思 路为:每次将相邻两个数比较,将小的调到前面,如果有6个数:8,7,5,4,2,0。第一次先将最前面的两个数8和7对调(看下图)。第二次将第二个数 和第三个数(8和5)对调.....如此总计进行了5次,得到7-5-4-2-0-8的顺序,可以看到:最大的数8已经沉底,成为最下面的一个数,而小的 数上升。经过第一轮(5次比较)后,得到了最大的数9。

Alt text

然后进行第二轮的比较(见下图),对余下的7,5,4,2,0进行新一轮的比较,以便使次大的数沉底。经过这一轮4次的比较与交换,得到次大的数7。

Alt text

按照此规律进行下去,可以推知6个数需要比较5轮,其中第一轮需要比较5次,第二轮需要比较4次....第五轮只需比较一次。

如果有n个数,则需要比较n-1轮,在第一轮比较重要进行n-1次两两比较,在第j轮中要进行n-j次的两两比较。

这种如水底的气泡逐步冒出水面一样,故称之为冒泡法。

编写8-2.c的源程序,程序如下:

Alt text

运行结果:

Alt text


百家号 互联网微风说

百家号 互联网微风说

微信公众号 weisico-com

微信公众号weisico-com

转载请注明:微思考学习网-关注技术,分享知识 >> 冒泡排序举例-C语言

赞 (0) 收藏
分享到