分享一个大牛的人工智能教程。零基础!通俗易懂!风趣幽默!希望你也加入到人工智能的队伍中来!请点击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)的排序方法,例如快速排序、堆排序或归并排序。

快速排序是目前内部排序方法中被认为是最好的方法,当待排序的关键字随机分布时,快速排序的平均时间最短;堆排序只需一个辅助存储空间,并且不会出现在快速排序中可能出现的最坏情况。这两种方法都是不稳定的排序方法,若要求排序稳定,可选择归并排序。通常可将归并排序和直接插入排序结合起来使用。先利用直接插入排序求得较长的有序子文件,然后再两两归并。

内部排序算法一般都是在一维数组上实现的。当记录本身信息量较大时,为避免耗费大量的时间移动记录,可以采用链表作为存储结构。

算法 - 内部排序方法总结相关推荐

  1. 掌握常见的内部排序方法(插入排序,冒泡排序,选择排序,快速排序,堆排序,希尔排序,归并排序,基数排序等)...

    掌握常见的内部排序方法(插入排序,冒泡排序,选择排序,快速排序,堆排序,希尔排序,归并排序,基数排序等). 数组高级以及Arrays(掌握) 排序方法 空间复杂度 时间复杂度 稳定性 插 入 排 序 ...

  2. 内部排序 (一):各种内部排序方法的比较

    作为数据结构的课程笔记,以便查阅.如有出错的地方,还请多多指正! 目录 各种内部排序方法的比较 地址排序 (基于关键字比较的) 内部排序在最坏情况下的最快速度 各种内部排序方法的比较 nnn 较小/基 ...

  3. 常用的几种简单的内部排序方法

    这几种排序方法分别为:冒泡排序,选择排序,插入排序,快速排序 1.冒泡排序: 思想:简单的说就是想办法把一堆数据中最大的数不停地往后边排. 代码: class Bubble{ // /** // * ...

  4. 数据结构排序算法 内部排序(冒泡、鸡尾酒、选择、简单插入、二分插入、快排、希尔、归并、堆排)C语言实现

    文章目录 排序 冒泡排序 鸡尾酒排序 选择排序: 简单插入排序: 二分插入排序 快速排序: 希尔排序: 归并排序: 堆排序: 排序 点击以下图片查看大图: 冒泡排序 1.比较相邻的元素,如果前一个比后 ...

  5. 七内部排序算法汇总(插入排序、Shell排序、冒泡排序、请选择类别、、高速分拣合并排序、堆排序)...

    写在前面: 排序是计算机程序设计中的一种重要操作,它的功能是将一个数据元素的随意序列,又一次排列成一个按keyword有序的序列.因此排序掌握各种排序算法很重要. 对以下介绍的各个排序,我们假定全部排 ...

  6. C语言——十四种内部排序算法【直接插入排序-冒泡排序-选择排序-插入排序-希尔排序-归并排序-快速排序-堆排序-折半插入排序-二分查找-路插入排序-表插入排序-简单选择排序-直接选择排序-树形选择】

    目录: 一:插入排序 A:直接插入排序 1.定义: 2.算法演示 实例1: 3.基本思想 4.排序流程图 实例1: B:希尔排序 1.定义: 2.算法演示 实例2: C:其他插入排序 a:折半插入排序 ...

  7. 十大排序算法总结 内部排序

    目录 排序测试模板 一.冒泡排序 冒泡排序-总体思想 冒泡排序-编程思想 冒泡排序-复杂度及优缺点 冒泡排序-优化 二.选择排序 选择排序-总体思想 ​选择排序-编程思想 选择排序-复杂度及优缺点 三 ...

  8. c语言几种排序方法的比较,基于C语言的几种排序方法比较.doc

    基于C语言的几种排序方法比较.doc 基于C语言的几种排序方法比较 [摘要]文章对c语言中的冒泡排序法.选择排序法.插入排序法进行比较讨论,以试图找出最佳排序方法. [关键词]c语言;排序方法;比较 ...

  9. 数据结构之内部排序三

    上两节讲解的几种排序方法不是时间复杂度大了,就是不稳定,今天我们讲一下一种时间复杂度低又稳定的一种内部排序方法: 归并排序 基本思想:将两个或两个以上的有序序列合并成一个新的有序序列: 有序序列V[1 ...

最新文章

  1. matlab车牌识别课程设计,matlab车牌识别课程设计报告模板(附源代码).doc
  2. 『计算机视觉』YOLO系列总结
  3. 【Matlab】绘制不同颜色线条
  4. DCMTK:表示增强型CT对象的类
  5. 核心概念——节点/边/Combo——内置节点——Diamond
  6. 201114阶段二qt自定义图元类
  7. python对平面设计帮助_平面设计工作心得
  8. 微服务架构设计总结实践
  9. django-后台管理-笔记
  10. android 沉浸式状态栏 兼容低版本,详解Android沉浸式实现兼容解决办法
  11. Intel张旭:通信和计算的融合将是5G的关键
  12. 共享可写节包含重定位_周末去哪?来云浮!来乡村美食(番薯)节!
  13. 鸿蒙是安卓改名,EMUI更名为鸿蒙,这几个问题的答案马上就能揭晓!
  14. 基于c#的winform中图片放大后不清晰问题
  15. pycaret 2 1新增功能
  16. 桌面虚拟化 VMware Horizon View 7 安装部署指南 云办公系统安装部署
  17. 3DLut表实现log视频的后期调色原理
  18. 成功解决android 网络视频边下载变播放。
  19. 海信电视E7H和E5H哪个好?有什么区别
  20. 十张图深度剖析供应链金融业务模式

热门文章

  1. 抖音开橱窗的三种方法
  2. 海参海鲜卡密提货系统(微信公众号版)asp源码下载
  3. 用MoviX制作一张自动播放的DVD电影光盘(转)
  4. OpenCV拍摄图像(C++)
  5. 使用jstack命令dump线程信息
  6. Docker——更新至2021/3/2,腾讯云centos7-dockermysql远程连接
  7. 论文笔记:全景图恢复房间结构(Room Layout Estimation From A Panorama Image)
  8. 微信小程序this.triggerEvent(),父组件中使用子组件的事件
  9. FIR滤波器文献笔记
  10. 如何用深度学习模型为自己做个漫画画像(含代码流程)(转载)