首先推荐一个学习数据结构的优秀的可视化网站:https://visualgo.net/en/sorting
主要总结以下6种排序算法,其中插入排序、选择排序、归并排序、快速排序。
1. 冒泡排序(Bubble Sort)和快速排序(Quick Sort)和随机快速排序(Random quick Sort)
博文待写
2. 插入排序(Insertion Sort)和希尔排序(Shell Sort):希尔排序是插入排序的高效改进版本。
博文待写
3. 选择排序(Selection Sort)和堆排序(Heap Sort)
博文待写
4. 归并排序(Merge Sort)
博文待写
5. 计数排序(Counting Sort)
博文待写
6. 基数排序(Radix Sort)
博文待写
排序算法 | 平均情况 | 最好情况 | 最坏情况 | 空间复杂度 | 稳定性 |
---|---|---|---|---|---|
冒泡排序 | O(n^2) | O(n) | O(n^2) | O(1) | 稳定 |
快速排序 | O(nlgn) | O(nlgn) | O(n^2) | O(lgn) | 不稳定 |
插入排序 | O(n^2) | O(n) | O(n^2) | O(1) | 稳定 |
希尔排序 | O(n^1.5) | O(n) | O(n^2) | O(1) | 不稳定 |
选择排序 | O(n^2) | O(n^2) | O(n^2) | O(1) | 不稳定 |
堆排序 | O(nlgn) | O(nlgn) | O(nlgn) | O(1) | 不稳定 |
归并排序 | O(nlgn) | O(nlgn) | O(nlgn) | O(n) | 稳定 |