裸泳的猪

沾沾自喜其实最可悲

0%

排序算法比较

各排序算法比较

类别 排序方法 时间复杂度 空间复杂度 稳定性 复杂性
最好-平均-最坏 辅助存储
插入排序 1-1直接插入 O(N)-O(N2)-O(N2) O(1) 稳定 简单
插入排序 1-2希尔排序 O(N)-O(N1.3)-O(N2) O(1) 不稳定 复杂
选择排序* 2-1直接选择 O(N)-O(N2)-O(N2) O(1) 不稳定 简单
选择排序* 2-2堆排序 O(Nlog2N)-O(Nlog2N)-O(N*log2N) O(1) 不稳定 复杂
交换排序* 3-1冒泡排序 O(N)-O(N2)-O(N2) O(1) 稳定 简单
交换排序* 3-2快速排序 O(Nlog2N)-O(Nlog2N)- O(N2) O(log2n)~O(n) 不稳定 复杂
归并排序 O(Nlog2N)-O(Nlog2N)-O(N*log2N) O(1) 稳定 复杂
基数排序 O(d(r+n))-O(d(r+n))-O(d(r+n)) O(rd+n) 稳定 复杂

*:(每轮都能确定最终位置)

1.冒泡排序

1、冒泡排序是一种用时间换空间的排序方法
2、最坏情况是把顺序的排列变成逆序,或者把逆序的数列变成顺序,最差时间复杂度O(N^2)只是表示其操作次数的数量级
3、最好的情况是数据本来就有序,复杂度为O(n)

2.快速排序

1、n大时好,快速排序比较占用内存,内存随n的增大而增大,但却是效率高不稳定的排序算法。
2、划分之后一边是一个,一边是n-1个,
这种极端情况的时间复杂度就是O(N^2)
3、最好的情况是每次都能均匀的划分序列,O(N*log2N)

3.归并排序

1、n大时好,归并比较占用内存,内存随n的增大而增大,但却是效率高且稳定的排序算法。

-------------本文结束感谢您的阅读-------------