常见排序算法的复杂度

稳定性:如果待排序的序列中存在两个或两个以上具有相同关键词的数据,排序后这些数据的相对次序保持不变,即它们的位置保持不变,通俗地讲,就是两个相同的数的相对顺序不会发生改变,则该算法是稳定的;如果排序后,数据的相对次序发生了变化,则该算法是不稳定的。关键词相同的数据元素将保持原有位置不变,所以该算法是稳定的

名称 时间复杂度 稳定性 空间复杂度
平均 最差 最好
冒泡排序 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)
桶排序

排序算法的分类

概述 - 图1