冒泡排序可以说是最常用的也是最容易理解的一种排序了,从最早接触计算机语言掌握的第一种排序

就是冒泡排序。

 

基本概念:对于给定的n个记录,从第一个记录开始依次对相邻的两个记录进行比较,当前面的记录大于

后面的记录时,交换其位置,进行一轮比较和交换位置后,n个记录中的最大记录将位于第n位;然后对

前(n - 1)个记录进行第二轮比较;重复该过程直到进行比较的记录只剩下一个为止。

冒泡排序基本思想是:对待排序的数字进行两两比较,如发现两个数字是反序的,则进行交换,直到无反序的

记录为止。

 

冒泡排序特点分析:

稳     定   性:稳定。

时间复杂度:总共比较 n(n-1)/2 次  时间复杂度为O(n2)。

 1 #include <iostream>
 2 
 3 using namespace std;
 4 
 5 void BubbleSort(int array[], int len)
 6 {
 7     int i, j;
 8     int temp;
 9 
10     for (i = 0; i < len -1; ++i)
11     {
12         for (j = len - 1; j > i; --j)
13         {
14             if (array[j] < array[j - 1])
15             {
16                 temp = array[j];
17                 array[j] = array[j - 1];
18                 array[j - 1] = temp;
19             }
20         }
21     }
22 }
23 
24 int main()
25 {
26     int i = 0;
27     int a[] = {29, 18, 87, 56, 3, 27};
28     int length = sizeof(a) / sizeof(a[0]);
29 
30     BubbleSort(a, length);
31 
32     for (i = 0; i < length; i++)
33     {
34         printf("%d ", a[i]);
35     }
36     printf("\n");
37     while(1);
38 
39     return 0;
40 }