排序算法 | 平均时间复杂度 | 最坏时间复杂度 | 最好时间复杂度 | 空间复杂度 | 稳定性 |
---|---|---|---|---|---|
选择排序 SelectSort | O(n^2) | O(n^2) | O(n^2) | O(1) | 不稳定 |
冒泡排序 BubbleSort | O(n^2) | O(n^2) | O(n) | O(1) | 稳定 |
插入排序 InsertSort | O(n^2) | O(n^2) | O(n) | O(1) | 稳定 |
希尔排序 ShellSort | O(n^1.3) | O(n^2) | O(n) | O(1) | 不稳定 |
归并排序 MergeSort | O(nlogn) | O(nlogn) | O(nlogn) | O(n) | 稳定 |
堆排序 HeapSort | O(nlogn) | O(nlogn) | O(nlogn) | O(1) | 不稳定 |
桶排序 BucketSort | O(n + k) | O(n^2) | O(n) | O(n + k) | 稳定 |
计数排序 CountSort | O(n + k) | O(n + k) | O(n + k) | O(n + k) | 稳定 |
基数排序 RadixSort | O(n * k) | O(n * k) | O(n * k) | O(n + k) | 稳定 |
快速排序 QuickSort | O(nlogn) | O(n^2) | O(nlogn) | O(nlogn) | 不稳定 |
选择排序:每一趟排序,从待排序序列中比较选择出最大的元素,和最后一个元素交换位置
冒泡排序:每一趟排序,对待排序序列,两两比较交换,将最大的冒泡到最后
插入排序:前一部分序列有序