常见排序算法的复杂度
稳定性:如果待排序的序列中存在两个或两个以上具有相同关键词的数据,排序后这些数据的相对次序保持不变,即它们的位置保持不变,通俗地讲,就是两个相同的数的相对顺序不会发生改变,则该算法是稳定的;如果排序后,数据的相对次序发生了变化,则该算法是不稳定的。关键词相同的数据元素将保持原有位置不变,所以该算法是稳定的
名称 | 时间复杂度 | 稳定性 | 空间复杂度 | ||
---|---|---|---|---|---|
平均 | 最差 | 最好 | |||
冒泡排序 | O(n^2) | O(n^2) | O(n) | 稳定 | O(1) |
直接插入排序 | O(n^2) | O(n^2) | O(n) | 稳定 | O(1) |
直接选择排序 | O(n^2) | O(n^2) | O(n^2) | 不稳定 | O(1) |
快速排序 | O(nlogn) | O(n^2) | O(nlogn) | 不稳定 | O(nlogn) |
堆排序 | O(nlogn) | O(nlogn) | O(nlogn) | 不稳定 | O(1) |
归并排序 | O(nlogn) | O(nlogn) | O(nlogn) | 稳定 | O(1) |
基数排序 | O(d(r+n)) | O(d(r+n)) | O(d(r+n)) | 稳定 | O(d(r+n)) |
希尔排序 | O(nlogn) | O(n^s)(1<s<2) | O(n^2) | 不稳定 | O(1) |
桶排序 |