码迷,mamicode.com
首页 > 编程语言 > 详细

C语言实现冒泡法排序

时间:2015-07-27 01:51:05      阅读:144      评论:0      收藏:0      [点我收藏+]

标签:

首先我们看冒泡法排序的原理,假设有一个包含6个数字的数组
其思路为:每次将相邻两个数比较,将小的调到前面,如果有6个数:8,7,5,4,2,0。第一次先将最前面的两个数8和7对调(看下图)。第二次将第二个数和第三个数(8和5)对调.....如此总计进行了5次,得到7-5-4-2-0-8的顺序,可以看到:最大的数8已经沉底,成为最下面的一个数,而小的数上升。经过第一轮(5次比较)后,得到了最大的数9。

技术分享
 


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

技术分享
 


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

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

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

代码如下:

#include<stdio.h>
int main()
{
int t,i,n,a[10];
printf("please enter 10 numbers:");

for(i=0;i<10;i++)
scanf("%d",&a[i]);

for(i=0;i<=8;i++)
    for(n=0;n<9-i;n++)
        if(a[n]>a[n+1])
        {
        t=a[n];
        a[n]=a[n+1];
        a[n+1]=t;
        }
printf("the sorted numbers is:");
for(i=0;i<=9;i++)
printf("%d\t",a[i]);
return 0;
}

 

C语言实现冒泡法排序

标签:

原文地址:http://www.cnblogs.com/alvysinger/p/4679037.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!