你是否在为排序算法的时间复杂度、空间复杂度和稳定性的记忆而绞尽脑汁。下面一首打油诗帮你牢记它。
常见排序算法
中文名称 | 英文名称 | 平均时间复杂度 | 最坏时间复杂度 | 最好时间复杂度 | 空间复杂度 | 稳定性 |
选择排序 | Selection | O(n^2) | O(n^2) | O(n^2) | 1 | 不稳定 |
冒泡排序 | Bubble | O(n^2) | O(n^2) | O(n) | 1 | 稳定 |
插入排序 | Insertion | O(n^2) | O(n^2) | O(n) | 1 | 稳定 |
快速排序 | Quick | O(n㏒₂n) | O(n^2) | O(n㏒₂n) | ㏒₂n | 不稳定 |
归并排序 | Merge | O(n㏒₂n) | O(n㏒₂n) | O(n㏒₂n) | n | 稳定 |
堆排序 | Heap | O(n㏒₂n) | O(n㏒₂n) | O(n㏒₂n) | 1 | 不稳定 |
希尔排序 | Shell | O(n^1.3) | O(n^2) | O(n) | 1 | 不稳定 |
桶排序 | Bucket | O(n+k) | O(n^2) | O(n) | n+k | 稳定 |
计数排序 | Counting | O(n+k) | O(n+k) | O(n+k) | n+k | 稳定 |
基数排序 | Radix | O(n*k) | O(n*k) | O(n*k) | n+k | 稳定 |
《忆排序,面试我最强》
选泡插,
快归堆希桶计基,
恩方恩老恩一三,
对恩加K恩乘K,
不稳稳稳不稳稳,
不稳不稳稳稳稳!
-----摘自马士兵老师
释义:选择排序,冒泡排序,插入排序的平均时间复杂度为O(n^2),稳定性分别为不稳定,稳定,稳定。
快速排序,归并排序,堆排序的平均复时间杂度为O(n㏒₂n),稳定性分别为不稳定,稳定,不稳定。
希尔排序 的平均时间复杂度为O(n^1.3),不稳定排序。
桶排序,计数排序,基数排序的平均时间复杂度为分别为O(n+k),O(n+k),O(n*k),均为稳定排序。