冒泡排序可以说是最常用的也是最容易理解的一种排序了,从最早接触计算机语言掌握的第一种排序
就是冒泡排序。
基本概念:对于给定的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 }