冒泡排序算法

冒泡排序(BubbleSort)的基本概念是:依次比较相邻的两个数,将小数放在前面,大数放在后面。即在第一趟:首先比较第1个和第2个数,将小数放前,大数放后。

然后比较第2个数和第3个数,将小数放前,大数放后,如此继续,直至比较最后两个数,将小数放前,大数放后。至此第一趟结束,将最大的数放到了最后。

在第二趟:仍从第一对数开始比较(因为可能由于第2个数和第3个数的交换,使得第1个数不再小于第2个数),将小数放前,大数放后,一直比较到倒数 第二个数(倒数第一的位置上已经是最大的),第二趟结束,在倒数第二的位置上得到一个新的最大数(其实在整个数列中是第二大的数)。

如此下去,重复以上过程,直至最终完成排序。

c语言实现如下:

 1 #include<stdio.h>  
 2 #include<stdlib.h>  
 3 #include<string.h>  
 4 void bubble_sort(int value[], int length)  
 5 {  
 6  int i = 0;  
 7  int j = 0;  
 8  int temp;  
 9  for(i = 1; i < length ; i++)  
10  {  
11   for(j = 0; j< length - i; j++)  
12   {  
13    if (value[j] > value[j+1])  
14    {  
15     temp = value[j];  
16     value[j] = value[j + 1];  
17     value[j+1] = temp;  
18    }  
19   
20   }  
21    
22  }  
23   
24   
25 }  
26 int main()  
27 {   
28  int value[8] = {1,10920,293105};  
29  int i = 0;  
30  int length = 8;  
31   
32  printf("Before:\n");  
33  for(i =0; i < length; i++)  
34  {  
35   if(i == length-1)  
36    printf("%d\n", value[i]);  
37   else  
38    printf("%d\t", value[i]);  
39  }  
40    
41  bubble_sort(value, length);  
42  printf("After:\n");  
43  for(i =0; i < length; i++)  
44  {  
45   if(i == length-1)  
46    printf("%d\n", value[i]);  
47   else  
48    printf("%d\t", value[i]);  
49  }  
50    
51  return 0;  
52 } 

posted on 2014-10-16 13:06  温柔的机械猫  阅读(211)  评论(0编辑  收藏  举报

导航