数据结构

常见十大排序算法概述

2019-11-01  本文已影响0人  程序员will

排序算法概述

网上常见的排序算法有十种:冒泡排序快速排序插入排序希尔排序选择排序堆排序归并排序计数排序基数排序桶排序

排序算法分类

上面十大排序算法按照非线性时间比较类排序线性时间非比较类排序进行分类:

img

排序算法对比

时间复杂度空间复杂度稳定性三方面对比十种排序方法如下:

排序算法 时间复杂度(平均) 时间复杂度(最坏) 时间复杂度(最好) 空间复杂度(平均) 稳定性
冒泡排序 O(n2)O(n2) O(n2)O(n2) O(n)O(n) O(1)O(1) 稳定
快速排序 O(nlog2n)O(nlog2⁡n) O(n2)O(n2) O(nlog2n)O(nlog2⁡n) O(nlog2n)O(nlog2⁡n) 不稳定
插入排序 O(n2)O(n2) O(n2)O(n2) O(n)O(n) O(1)O(1) 稳定
希尔排序 O(n1.3)O(n1.3) O(n2)O(n2) O(n)O(n) O(1)O(1) 不稳定
选择排序 O(n2)O(n2) O(n2)O(n2) O(n2)O(n2) O(1)O(1) 不稳定
堆排序 O(nlog2n)O(nlog2⁡n) O(nlog2n)O(nlog2⁡n) O(nlog2n)O(nlog2⁡n) O(1)O(1) 不稳定
归并排序 O(nlog2n)O(nlog2⁡n) O(nlog2n)O(nlog2⁡n) O(nlog2n)O(nlog2⁡n) O(n)O(n) 稳定
计数排序 O(n+k)O(n+k) O(n+k)O(n+k) O(n+k)O(n+k) O(n+k)O(n+k) 稳定
基数排序 O(n+k)O(n+k) O(n2)O(n2) O(n)O(n) O(n+k)O(n+k) 稳定
桶排序 O(n⋅k)O(n⋅k) O(n⋅k)O(n⋅k) O(n⋅k)O(n⋅k) O(n+k)O(n+k) 稳定
上一篇 下一篇

猜你喜欢

热点阅读