算法 - 内部排序方法总结
分享一个大牛的人工智能教程。零基础!通俗易懂!风趣幽默!希望你也加入到人工智能的队伍中来!请点击http://www.captainbed.net
各种排序方法的性能比较 | |||||
排序方法 | 最好时间复杂度 | 平均时间复杂度 | 最坏时间复杂度 | 空间复杂度 | 稳定性 |
直接插入排序 | O(n) | O(n2) | O(n2) | O(1) | 稳定 |
简单选择排序 | O(n2) | O(n2) | O(n2) | O(1) | 不稳定 |
冒泡排序 | O(n) | O(n2) | O(n2) | O(1) | 稳定 |
希尔排序 | - | O(n1.25) | - | O(1) | 不稳定 |
快速排序 | O(nlog2n) | O(nlog2n) | O(n2) | O(log2n)~O(n) | 不稳定 |
堆排序 | O(nlog2n) | O(nlog2n) | O(nlog2n) | O(1) | 不稳定 |
归并排序 | O(nlog2n) | O(nlog2n) | O(nlog2n) | O(n) | 稳定 |
不同的排序方法各有优缺点,可根据需要运用到不同的场合。选取排序方法时需要考虑的主要因素有:待排序的记录个数n;记录本身的大小;关键字的分布情况;对排序稳定性的要求;语言工具的条件;辅助空间的大小等。
依据这些因素,可以得到以下同点结论:
(1)若待排序的记录数n较小时,可采用插入排序和简单选择排序。由于直接插入排序所需的记录移动操作较选择排序多,因此当记录本身信息量较大时,用直接选择排序方法较好。
(2)若待排序记录按关键字基本有序,则宜采用直接插入排序或冒泡排序。
(3)当n很大且关键字的位较少时,采用链式基数排序较好。
(4)若n较大,则应采用时间复杂度为O(nlog<sub>2</sub>n)的排序方法,例如快速排序、堆排序或归并排序。
快速排序是目前内部排序方法中被认为是最好的方法,当待排序的关键字随机分布时,快速排序的平均时间最短;堆排序只需一个辅助存储空间,并且不会出现在快速排序中可能出现的最坏情况。这两种方法都是不稳定的排序方法,若要求排序稳定,可选择归并排序。通常可将归并排序和直接插入排序结合起来使用。先利用直接插入排序求得较长的有序子文件,然后再两两归并。
内部排序算法一般都是在一维数组上实现的。当记录本身信息量较大时,为避免耗费大量的时间移动记录,可以采用链表作为存储结构。
算法 - 内部排序方法总结相关推荐
- 掌握常见的内部排序方法(插入排序,冒泡排序,选择排序,快速排序,堆排序,希尔排序,归并排序,基数排序等)...
掌握常见的内部排序方法(插入排序,冒泡排序,选择排序,快速排序,堆排序,希尔排序,归并排序,基数排序等). 数组高级以及Arrays(掌握) 排序方法 空间复杂度 时间复杂度 稳定性 插 入 排 序 ...
- 内部排序 (一):各种内部排序方法的比较
作为数据结构的课程笔记,以便查阅.如有出错的地方,还请多多指正! 目录 各种内部排序方法的比较 地址排序 (基于关键字比较的) 内部排序在最坏情况下的最快速度 各种内部排序方法的比较 nnn 较小/基 ...
- 常用的几种简单的内部排序方法
这几种排序方法分别为:冒泡排序,选择排序,插入排序,快速排序 1.冒泡排序: 思想:简单的说就是想办法把一堆数据中最大的数不停地往后边排. 代码: class Bubble{ // /** // * ...
- 数据结构排序算法 内部排序(冒泡、鸡尾酒、选择、简单插入、二分插入、快排、希尔、归并、堆排)C语言实现
文章目录 排序 冒泡排序 鸡尾酒排序 选择排序: 简单插入排序: 二分插入排序 快速排序: 希尔排序: 归并排序: 堆排序: 排序 点击以下图片查看大图: 冒泡排序 1.比较相邻的元素,如果前一个比后 ...
- 七内部排序算法汇总(插入排序、Shell排序、冒泡排序、请选择类别、、高速分拣合并排序、堆排序)...
写在前面: 排序是计算机程序设计中的一种重要操作,它的功能是将一个数据元素的随意序列,又一次排列成一个按keyword有序的序列.因此排序掌握各种排序算法很重要. 对以下介绍的各个排序,我们假定全部排 ...
- C语言——十四种内部排序算法【直接插入排序-冒泡排序-选择排序-插入排序-希尔排序-归并排序-快速排序-堆排序-折半插入排序-二分查找-路插入排序-表插入排序-简单选择排序-直接选择排序-树形选择】
目录: 一:插入排序 A:直接插入排序 1.定义: 2.算法演示 实例1: 3.基本思想 4.排序流程图 实例1: B:希尔排序 1.定义: 2.算法演示 实例2: C:其他插入排序 a:折半插入排序 ...
- 十大排序算法总结 内部排序
目录 排序测试模板 一.冒泡排序 冒泡排序-总体思想 冒泡排序-编程思想 冒泡排序-复杂度及优缺点 冒泡排序-优化 二.选择排序 选择排序-总体思想 选择排序-编程思想 选择排序-复杂度及优缺点 三 ...
- c语言几种排序方法的比较,基于C语言的几种排序方法比较.doc
基于C语言的几种排序方法比较.doc 基于C语言的几种排序方法比较 [摘要]文章对c语言中的冒泡排序法.选择排序法.插入排序法进行比较讨论,以试图找出最佳排序方法. [关键词]c语言;排序方法;比较 ...
- 数据结构之内部排序三
上两节讲解的几种排序方法不是时间复杂度大了,就是不稳定,今天我们讲一下一种时间复杂度低又稳定的一种内部排序方法: 归并排序 基本思想:将两个或两个以上的有序序列合并成一个新的有序序列: 有序序列V[1 ...
最新文章
- matlab车牌识别课程设计,matlab车牌识别课程设计报告模板(附源代码).doc
- 『计算机视觉』YOLO系列总结
- 【Matlab】绘制不同颜色线条
- DCMTK:表示增强型CT对象的类
- 核心概念——节点/边/Combo——内置节点——Diamond
- 201114阶段二qt自定义图元类
- python对平面设计帮助_平面设计工作心得
- 微服务架构设计总结实践
- django-后台管理-笔记
- android 沉浸式状态栏 兼容低版本,详解Android沉浸式实现兼容解决办法
- Intel张旭:通信和计算的融合将是5G的关键
- 共享可写节包含重定位_周末去哪?来云浮!来乡村美食(番薯)节!
- 鸿蒙是安卓改名,EMUI更名为鸿蒙,这几个问题的答案马上就能揭晓!
- 基于c#的winform中图片放大后不清晰问题
- pycaret 2 1新增功能
- 桌面虚拟化 VMware Horizon View 7 安装部署指南 云办公系统安装部署
- 3DLut表实现log视频的后期调色原理
- 成功解决android 网络视频边下载变播放。
- 海信电视E7H和E5H哪个好?有什么区别
- 十张图深度剖析供应链金融业务模式
热门文章
- 抖音开橱窗的三种方法
- 海参海鲜卡密提货系统(微信公众号版)asp源码下载
- 用MoviX制作一张自动播放的DVD电影光盘(转)
- OpenCV拍摄图像(C++)
- 使用jstack命令dump线程信息
- Docker——更新至2021/3/2,腾讯云centos7-dockermysql远程连接
- 论文笔记:全景图恢复房间结构(Room Layout Estimation From A Panorama Image)
- 微信小程序this.triggerEvent(),父组件中使用子组件的事件
- FIR滤波器文献笔记
- 如何用深度学习模型为自己做个漫画画像(含代码流程)(转载)