冒泡排序的思想:两两相邻的元素进行比较,如果不满足条件就交换位置。
程序:
#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)
。