【数据结构】常见排序算法的比较


前言

对于各种排序算法的性能我们可以从时间复杂度、空间复杂度、特殊情况和稳定性四个方面来比较。其中特殊情况是指当序列为有序时,对排序算法复杂度的影响。


一、各种排序算法比较

排序算法 时间复杂度 空间复杂度 序列有序 稳定性 直接插入排序 O(n^2) O(1) O(n) 稳定 希尔排序 O(n^1.3) O(1) / 不稳定 冒泡排序 O(n^2) O(1) O(n) 稳定 快速排序 O(nlog2 n) O(log2 n) O(n^2) 不稳定 简单选择排序 O(n^2) O(1) O(n^2) 不稳定 堆排序 O(nlog2 n) O(1) O(nlog2 n) 不稳定 归并排序 O(nlog2 n) O(n) O(nlog2 n) 稳定 基数排序 O(k(m+n)) O(n+m) O(k(m+n)) 稳定
选择排序算法时一般遵循的原则: 排序规模不大,用直接插入排序、简单选择排序、冒泡排序均可,虽然其时间复杂度稍逊于快速排序等算法。但其实现简单,在数据量较小时性能的差距体现不明显。 当排序规模很大且对稳定性有要求时,可以采用归并排序,前提是有足够的辅助空间。 当排序规模很大而关键字位数较小时,可以采用基数排序,速度有保证且稳定。’
经验分享 程序员 微信小程序 职场和发展