算法思想:
- 通过与相邻元素的比较和交换来把小的数交换到最前面。这个过程类似于水泡向上升一样,因此而得名。
- 冒泡排序的时间复杂度为O(n^2)
- 冒泡排序是稳定的排序算法
举例:
4 2 3 1 5
第一趟冒泡
第一轮:2 4 3 1 5
第二轮:2 4 1 3 5
第三轮:2 1 4 3 5
第四轮:1 2 4 3 5
得到最小的元素1排在最前面
第二趟冒泡:
第一轮:1 2 4 3 5
第二轮:1 2 3 4 5
第三轮:1 2 3 4 5
得到次大的元素2在第二个位置上
对剩下的序列依次冒泡就会得到一个有序序列
代码:
1 #include <iostream> 2 using namespace std; 3 4 int a[] = { 4,2,3,1,5 }; 5 void BubbleSort(int* a,int n) { 6 for(int i=0;i<n-1;i++)//定义趟数 7 for (int j = n - 1; j > i; j--) { 8 int tmp; 9 if (a[j - 1] > a[j]) { 10 tmp = a[j - 1]; 11 a[j - 1] = a[j]; 12 a[j] = tmp; 13 } 14 } 15 } 16 17 int main() { 18 BubbleSort(a, 5); 19 for (int i = 0; i < 5; i++) 20 cout << a[i] << " "; 21 return 0; 22 }