标签:排列 程序 class 最快 希尔排序 table 数据类型 body The
如果一个排序算法能够保留数组中重复元素的相对位置则可以被称为是稳定的
一般只有在稳定性是必要的情况下,稳定的排序算法才有优势。
算法 | 是否稳定 | 是否为原地排序 | 时间复杂度 | 空间复杂度 | 备注 |
---|---|---|---|---|---|
选择排序 | 否 | 是 | N^2 | 1 | |
插入排序 | 是 | 是 | 介于 N 和 N^2 之间 | 1 | 取决于输入元素的排列情况 |
希尔排序 | 否 | 是 | NlogN? | 1 | |
快速排序 | 否 | 是 | NlogN | lgN | 运行效率由概率提供保证 |
三向快速排序 | 否 | 是 | 介于 N 和 NlogN 之间 | lgN | 运行效率由概率保证,同时也取决于输入元素的分布情况 |
归并排序 | 是 | 否 | NlogN | N | |
堆排序 | 否 | 是 | NlogN | 1 |
如果稳定性重很重要而空见又不是问题,归并排序可能是最好的选择
Java 的系统程序员选择对原始数据类型使用(三向切分的)快速排序,对引用类型使用归并排序。暗示着用速度和空间(对于原始数据类型)来换取稳定性(对于引用类型)。
标签:排列 程序 class 最快 希尔排序 table 数据类型 body The
原文地址:https://www.cnblogs.com/aiguozou/p/11408905.html