一、十大排序算法复杂度对比

二、关于排序算法的总结

1、基数排序仅仅适用于整型数的排序,一般不与另外的排序方法一起比较。

2、关于算法的稳定性:不稳定的算法有 “快希选堆”——快速排序,希尔排序,选择排序和堆排序。

3、关于问题的规模

(1)数据规模较大时,应该选择平均复杂度较好的算法:优先考虑排序、归并排序、堆排序树形选择排序、希尔排序等。

(2)数据规模较小时选择较简单的算法:插入排序、交换排序、直接选择排序等。

4、序列的初始状态

(1)初始记录接近有序时:选用直接插入、堆排序、冒泡排序、归并排序、希尔排序等,其中最快的是冒泡排序和插入排序。此时只有记录操作,没有记录移动。平均时间复杂度为Ο(n)。

(2)初始记录无序时最好选择快速排序、希尔排序、简单选择排序。它们通过“振荡”的方式让数值相差不大但是位置相差很大的元素快速到位。

5、时间和辅助空间

当空间复杂度高且排序规模较大时,排序需要的内存空间可能会超出限制,需要频繁地从外部存储设备中读写数据,这是算法的性能会急剧下降,所以应该避免使用一些空间复杂度高的算法,比如希尔排序和树形选择排序。

6、关于记录的大小

如果记录占用的空间比较大,排序时应该选择移动次数少的算法,比如:直接选择排序和直接插入排序。

7、堆排序对空间的要求低于排序,并且不会出现快速排序最差的情况(快速排序遇到逆序时,退化为冒泡排序)。

排序算法——十大排序算法总结与对比相关推荐

  1. 排序算法——十大排序算法的图示与实现

    十大排序算法概览 比较类排序:通过比较来决定元素间的相对次序,由于其时间复杂度不能突破O(nlogn),因此也称为非线性时间比较类排序. 非比较类排序:不通过比较来决定元素间的相对次序,它可以突破基于 ...

  2. 数据结构与算法——十大排序

    排序 1.排序的基本定义 排序:就是使一串记录,按照其中的某个或者某些关键字的大小,递增或递减的排列起来的操作. 排序算法:就是如何使得记录按照要求排列的方法.排序算法在很多领域都得到很大的重视,尤其 ...

  3. 算法 十大排序 堆排序

    十种排序算法--堆排序(小顶堆) 首先要了解什么是堆?小顶堆又是什么?而堆排序是十种排序种唯一种自定义的数据结构 这里的堆就是我们所熟悉的二叉树 而小顶堆又是什么呢? 小顶堆就是根节点比子节点小,子节 ...

  4. 归并排序执行次数_十大排序算法,看这篇就够了

    排序算法分类[1][2] 比较类排序:通过比较来决定元素间的相对次序,由于其时间复杂度不能突破O(nlogn),因此也称为非线性时间比较类排序. 非比较类排序:不通过比较来决定元素间的相对次序,它可以 ...

  5. 数据结构自学笔记(C语言)十大排序

    这节讲排序,排序有十大经典算法,如图所示.(概念参考https://www.cnblogs.com/onepixel/p/7674659.html) 十种常见排序算法可以分为两大类: 比较类排序:通过 ...

  6. 这或许是东半球分析十大排序算法最好的一篇文章

    作者 | 不该相遇在秋天 转载自五分钟学算法(ID:CXYxiaowu) 前言 本文全长 14237 字,配有 70 张图片和动画,和你一起一步步看懂排序算法的运行过程. 预计阅读时间 47 分钟,强 ...

  7. 「干货总结」程序员必知必会的十大排序算法

    点击上方 好好学java ,选择 星标 公众号 重磅资讯.干货,第一时间送达 今日推荐:硬刚一周,3W字总结,一年的经验告诉你如何准备校招! 个人原创100W+访问量博客:点击前往,查看更多 绪论 身 ...

  8. 「归纳|总结」程序员必知必会的十大排序算法

    微信搜一搜「bigsai」关注这个有趣的程序员 新人原创公众号,求支持一下!你的点赞三连肯定对我至关重要! 文章已收录在 我的Github bigsai-algorithm 欢迎star 本文目录 绪 ...

  9. 八十八、Python | 十大排序算法系列(下篇)

    @Author:Runsen @Date:2020/7/10 人生最重要的不是所站的位置,而是内心所朝的方向.只要我在每篇博文中写得自己体会,修炼身心:在每天的不断重复学习中,耐住寂寞,练就真功,不畏 ...

最新文章

  1. 干货 | OpenCV看这篇就够了,9段代码详解图像变换基本操作
  2. C++ delete 和 delete []的区别
  3. 深入理解JVM内存区域与内存分配
  4. qss样式表笔记大全(一):qss名词解析(包含相关示例)
  5. E. Company(Codeforces Round #520 (Div. 2))
  6. 案例 银行取款 java 1615136927
  7. JAVA设计模式之抽象工厂模式
  8. 单片机六位抢答器c语言程序,八路电子抢答器(基于51单片机的8路抢答器设计C语言程序)...
  9. tinymce中粘贴word文本时保留格式
  10. NoiseAsh Rule Tec All Collection for Mac - 无源均衡器
  11. App客户端性能测试点总结
  12. shift 位置参数左移命令
  13. 蓝丝雨dnf刷图脚本制作
  14. c++ 集合常用函数及集合排序
  15. sys matlab,matlab中sys什么意思
  16. 采集本地HTML数据,火车采集器保存为本地word、excel、html、txt文件方法及文件模板_爬虫软件技术与爬虫软件网页数据采集器门户...
  17. 原来小米手机的电源键不止能用来关机,这么多实用功能,别浪费了
  18. jmeter配置远程运行
  19. Java web实时进度条整个系统共用(如java上传、下载进度条、导入、导出excel进度条等)...
  20. 选择时间检定仪应该注意这11点

热门文章

  1. Android 8.0 VTS 测试 FAIL 项解决记录
  2. OpenCV 图片去水印(不需要自己做水印模板)
  3. 基址寻址和变址寻址区别(白话版)
  4. 爬取掌阅app免费电子书数据
  5. 深度学习笔记之稀疏自编码器
  6. 云计算平台为什么是必需的
  7. USB键盘背后的那些事儿
  8. A* 第k短路详解 (详尽)
  9. 刚发布!新型病毒下,程序员可在家免费学习了!
  10. 高性能处理器架构与编程实验(基础实验2:openEuler系统环境实验)