博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
八大排序算法总结
阅读量:6696 次
发布时间:2019-06-25

本文共 766 字,大约阅读时间需要 2 分钟。

八大排序的稳定性及复杂度总结如下:

 

 

选择排序算法准则

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

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

 

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

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

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

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

 

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

 

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

快速排序:是目前基于比较的内部排序中被认为是最好的方法,当待排序的关键字是随机分布时,快速排序的平均时间最短;

堆排序:如果内存空间允许且要求稳定性的,

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

 

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

 

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

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

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

 

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

 

6)基数排序

它是一种稳定的排序算法,但有一定的局限性:

  1、关键字可分解。

  2、记录的关键字位数较少,如果密集更好

  3、如果是数字时,最好是无符号的,否则将增加相应的映射复杂度,可先将其正负分开排序。

转载于:https://www.cnblogs.com/mark-meng/p/6045837.html

你可能感兴趣的文章
在C#中使用官方驱动操作MongoDB
查看>>
XML 编辑器 介绍
查看>>
Thread thread2 = new Thread()
查看>>
Hadoop 概述
查看>>
perl 工具小脚本
查看>>
SQL存储过程调试
查看>>
[转载]手机软件开发之我见
查看>>
UNITY实现FLASH中的setTimeout
查看>>
C#文件和文件文件夹按时间、名称排序-顺序与倒序
查看>>
TMPFS详解
查看>>
《异构信息网络挖掘: 原理和方法》—— 第2章 基于排名的聚类 2.1 概述
查看>>
[案例]网易云音乐的个性化推荐
查看>>
《QTP自动化测试权威指南(第二版)》—第2章2.3节搜索标签(Search Tab)
查看>>
数据结构
查看>>
王亟亟的Python学习之路(10)-函数对象的作用域,函数作为返回值,闭包
查看>>
【hibernate框架】一对一双向外键关联(Annotation实现)
查看>>
Android热修复简单总结
查看>>
CSS 火焰?不在话下
查看>>
设计模式--适配器模式(Adapter Pattern)
查看>>
谈谈我理解的Android组件化
查看>>