排序算法——十大排序算法总结与对比
一、十大排序算法复杂度对比
二、关于排序算法的总结
1、基数排序仅仅适用于整型数的排序,一般不与另外的排序方法一起比较。
2、关于算法的稳定性:不稳定的算法有 “快希选堆”——快速排序,希尔排序,选择排序和堆排序。
3、关于问题的规模
(1)数据规模较大时,应该选择平均复杂度较好的算法:优先考虑排序、归并排序、堆排序树形选择排序、希尔排序等。
(2)数据规模较小时选择较简单的算法:插入排序、交换排序、直接选择排序等。
4、序列的初始状态
(1)初始记录接近有序时:选用直接插入、堆排序、冒泡排序、归并排序、希尔排序等,其中最快的是冒泡排序和插入排序。此时只有记录操作,没有记录移动。平均时间复杂度为Ο(n)。
(2)初始记录无序时最好选择快速排序、希尔排序、简单选择排序。它们通过“振荡”的方式让数值相差不大但是位置相差很大的元素快速到位。
5、时间和辅助空间
当空间复杂度高且排序规模较大时,排序需要的内存空间可能会超出限制,需要频繁地从外部存储设备中读写数据,这是算法的性能会急剧下降,所以应该避免使用一些空间复杂度高的算法,比如希尔排序和树形选择排序。
6、关于记录的大小
如果记录占用的空间比较大,排序时应该选择移动次数少的算法,比如:直接选择排序和直接插入排序。
7、堆排序对空间的要求低于排序,并且不会出现快速排序最差的情况(快速排序遇到逆序时,退化为冒泡排序)。
排序算法——十大排序算法总结与对比相关推荐
- 排序算法——十大排序算法的图示与实现
十大排序算法概览 比较类排序:通过比较来决定元素间的相对次序,由于其时间复杂度不能突破O(nlogn),因此也称为非线性时间比较类排序. 非比较类排序:不通过比较来决定元素间的相对次序,它可以突破基于 ...
- 数据结构与算法——十大排序
排序 1.排序的基本定义 排序:就是使一串记录,按照其中的某个或者某些关键字的大小,递增或递减的排列起来的操作. 排序算法:就是如何使得记录按照要求排列的方法.排序算法在很多领域都得到很大的重视,尤其 ...
- 算法 十大排序 堆排序
十种排序算法--堆排序(小顶堆) 首先要了解什么是堆?小顶堆又是什么?而堆排序是十种排序种唯一种自定义的数据结构 这里的堆就是我们所熟悉的二叉树 而小顶堆又是什么呢? 小顶堆就是根节点比子节点小,子节 ...
- 归并排序执行次数_十大排序算法,看这篇就够了
排序算法分类[1][2] 比较类排序:通过比较来决定元素间的相对次序,由于其时间复杂度不能突破O(nlogn),因此也称为非线性时间比较类排序. 非比较类排序:不通过比较来决定元素间的相对次序,它可以 ...
- 数据结构自学笔记(C语言)十大排序
这节讲排序,排序有十大经典算法,如图所示.(概念参考https://www.cnblogs.com/onepixel/p/7674659.html) 十种常见排序算法可以分为两大类: 比较类排序:通过 ...
- 这或许是东半球分析十大排序算法最好的一篇文章
作者 | 不该相遇在秋天 转载自五分钟学算法(ID:CXYxiaowu) 前言 本文全长 14237 字,配有 70 张图片和动画,和你一起一步步看懂排序算法的运行过程. 预计阅读时间 47 分钟,强 ...
- 「干货总结」程序员必知必会的十大排序算法
点击上方 好好学java ,选择 星标 公众号 重磅资讯.干货,第一时间送达 今日推荐:硬刚一周,3W字总结,一年的经验告诉你如何准备校招! 个人原创100W+访问量博客:点击前往,查看更多 绪论 身 ...
- 「归纳|总结」程序员必知必会的十大排序算法
微信搜一搜「bigsai」关注这个有趣的程序员 新人原创公众号,求支持一下!你的点赞三连肯定对我至关重要! 文章已收录在 我的Github bigsai-algorithm 欢迎star 本文目录 绪 ...
- 八十八、Python | 十大排序算法系列(下篇)
@Author:Runsen @Date:2020/7/10 人生最重要的不是所站的位置,而是内心所朝的方向.只要我在每篇博文中写得自己体会,修炼身心:在每天的不断重复学习中,耐住寂寞,练就真功,不畏 ...
最新文章
- 干货 | OpenCV看这篇就够了,9段代码详解图像变换基本操作
- C++ delete 和 delete []的区别
- 深入理解JVM内存区域与内存分配
- qss样式表笔记大全(一):qss名词解析(包含相关示例)
- E. Company(Codeforces Round #520 (Div. 2))
- 案例 银行取款 java 1615136927
- JAVA设计模式之抽象工厂模式
- 单片机六位抢答器c语言程序,八路电子抢答器(基于51单片机的8路抢答器设计C语言程序)...
- tinymce中粘贴word文本时保留格式
- NoiseAsh Rule Tec All Collection for Mac - 无源均衡器
- App客户端性能测试点总结
- shift 位置参数左移命令
- 蓝丝雨dnf刷图脚本制作
- c++ 集合常用函数及集合排序
- sys matlab,matlab中sys什么意思
- 采集本地HTML数据,火车采集器保存为本地word、excel、html、txt文件方法及文件模板_爬虫软件技术与爬虫软件网页数据采集器门户...
- 原来小米手机的电源键不止能用来关机,这么多实用功能,别浪费了
- jmeter配置远程运行
- Java web实时进度条整个系统共用(如java上传、下载进度条、导入、导出excel进度条等)...
- 选择时间检定仪应该注意这11点