排序算法优劣

来源:互联网 发布:pdf密码破解软件 编辑:程序博客网 时间:2024/06/07 04:06

对n较大的排序记录。一般的选择都是时间复杂度为O(nlog2n)的排序方法。


时间复杂度来说:

(1)平方阶(O(n2))排序
  各类简单排序:直接插入、直接选择和冒泡排序;
(2)线性对数阶(O(nlog2n))排序
  快速排序、堆排序和归并排序;
(3)O(n1+§))排序,§是介于0和1之间的常数。

希尔排序
(4)线性阶(O(n))排序
  基数排序,此外还有桶、箱排序。

说明:

当原表有序或基本有序时,直接插入排序和冒泡排序将大大减少比较次数和移动记录的次数,时间复杂度可降至O(n);

而快速排序则相反,当原表基本有序时,将蜕化为冒泡排序,时间复杂度提高为O(n2);

原表是否有序,对简单选择排序、堆排序、归并排序和基数排序的时间复杂度影响不大。


稳定性:

排序算法的稳定性:若待排序的序列中,存在多个具有相同关键字的记录,经过排序, 这些记录的相对次序保持不变,则称该算法是稳定的;若经排序后,记录的相对 次序发生了改变,则称该算法是不稳定的。
稳定性的好处:排序算法如果是稳定的,那么从一个键上排序,然后再从另一个键上排序,第一个键排序的结果可以为第二个键排序所用。基数排序就是这样,先按低位排序,逐次按高位排序,低位相同的元素其顺序再高位也相同时是不会改变的。另外,如果排序算法稳定,可以避免多余的比较;

稳定的排序算法:冒泡排序、插入排序、归并排序和基数排序

不是稳定的排序算法:选择排序、快速排序、希尔排序、堆排序

 

选择排序算法准则:

每种排序算法都各有优缺点。因此,在实用时需根据不同情况适当选用,甚至可以将多种方法结合起来使用。

选择排序算法的依据

影响排序的因素有很多,平均时间复杂度低的算法并不一定就是最优的。相反,有时平均时间复杂度高的算法可能更适合某些特殊情况。同时,选择算法时还得考虑它的可读性,以利于软件的维护。一般而言,需要考虑的因素有以下四点:

1.待排序的记录数目n的大小;

2.记录本身数据量的大小,也就是记录中除关键字外的其他信息量的大小;

3.关键字的结构及其分布情况;

4.对排序稳定性的要求。

设待排序元素的个数为n.

1)当n较大,则应采用时间复杂度为O(nlog2n)的排序方法:快速排序、堆排序或归并排序序。

快速排序:是目前基于比较的内部排序中被认为是最好的方法,当待排序的关键字是随机分布时,快速排序的平均时间最短;
堆排序 : 如果内存空间允许且要求稳定性的,

归并排序:它有一定数量的数据移动,所以我们可能过与插入排序组合,先获得一定长度的序列,然后再合并,在效率上将有所提高。

2) 当n较大,内存空间允许,且要求稳定性 =》归并排序

3)当n较小,可采用直接插入或直接选择排序。

直接插入排序:当元素分布有序,直接插入排序将大大减少比较次数和移动记录的次数。

直接选择排序 :元素分布有序,如果不要求稳定性,选择直接选择排序

5)一般不使用或不直接使用传统的冒泡排序。

6)基数排序
它是一种稳定的排序算法,但有一定的局限性:
  1、关键字可分解。
  2、记录的关键字位数较少,如果密集更好
  3、如果是数字时,最好是无符号的,否则将增加相应的映射复杂度,可先将其正负分开排序。

0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 面试电话没接到怎么办 上班时间接到猎头电话怎么办 win8电脑软件打不开怎么办 忘记申报个税怎么办 辞职后考研档案怎么办 私企辞职后档案怎么办 工人档案丢了怎么办 事业单位试用期考核不合格怎么办 工厂不好招人怎么办 办理入职手续怎么办 管理员工不加班怎么办 没有毕业证怎么办入职 不想加班的员工怎么办 邮寄辞职信拒收怎么办 办理退休档案不见了怎么办 办理退休没有档案怎么办 办理退休没有个人档案怎么办 档案被学校丢失怎么办 手动挡汽车脱档怎么办 辞职工作没人交接怎么办 ipad反复重启怎么办 ipad老是重启怎么办 苹果8死机了怎么办 平板突然死机了怎么办 平板卡死机了怎么办 小米ipad死机了怎么办 ipad死机了黑屏怎么办 小米4死机了怎么办 小米平板黑屏是怎么办? ipad死机怎么办不能关机 ipad突然死机了怎么办 京东买ipad坏了怎么办 ipad开机键失灵怎么办 苹果手机按键坏了怎么办 ipad使用中黑屏怎么办 苹果下不可软件怎么办 大学毕业想要当演员怎么办 郑州东站怎么办临时身份证 因招工年龄大造小档桉怎么办 6楼层顶墙边漏水怎么办 信访三级终结后怎么办