冒泡排序的思想:两两相邻的元素进行比较,如果不满足条件就交换位置。
程序:
#include <iostream> using namespace std; void BubbleSort(int a[], int length) { //注意冒泡排序是相邻两两比较,且j的遍历长度是在不断缩短的 for (int i = 0; i < length; i++) { for (int j = 1; j < length - i; j++) { if (a[j - 1] > a[j]) { int temp = a[j - 1]; a[j - 1] = a[j]; a[j] = temp; } } } } int main() { int a[10] = { 10, 13, 8, 6, 12, 15, 2, 20, 18, 28 }; int length = 10; BubbleSort(a, length); //QuickSort(a, 0, 10-1); //InsertSort(a, length); //SelectSort(a, length); //HeapSort(a, length); //MergeSort(a, length); for (int i = 0; i < 10; i++) { cout << a[i] << " "; } cout << endl; return 0; }
输出结果:
冒泡排序算法分析:
空间复杂度:不满足条件时需要一个辅助空间来进行交换,空间复杂度为O(1)
。
空间复杂度:i
遍历n
次,j
每次遍历n-i
次,即n
个n-i
,最后时间复杂度是O(n^2)
。