本文转自 《卢明冬的博客》

文章目录

  • 排序算法的分析和评价
  • 2.十大排序经典算法总览
    • 2.1 排序算法的分类
    • 2.2 排序算法的性能
    • 2.3 各阶复杂度性能对比
    • 2.4 排序算法的初始状态影响
  • 3.十大经典排序算法详解
    • 3.1 冒泡排序
    • 3.2.选择排序(Selection Sort)
    • 3.3.插入排序(Insertion Sort)
    • 3.4.希尔排序(Shell's Sort)
    • 3.5.归并排序(Merge Sort)
    • 3.6.快速排序(Quick Sort)
    • 3.7.堆排序(Heap Sort)
    • 3.8.桶排序(Bucket Sort)
    • 3.9.计数排序(Counting Sort)
    • 3.10.基数排序(Radix sort)

排序算法是《数据结构和算法》中非常基础的算法,但却占据着十分重要的位置,几乎可以说是我们在日常编程代码中使用最频繁的基础算法。本文对常见的十大经典排序算法进行了详细的知识点梳理,从排序思路、动图演示、代码实现、复杂度分析、算法优化等多个方面分别对不同的排序算法进行讲解,内容详实,一篇文章几乎囊括了排序算法所有必知必会的知识点,夸张点说,算得上是 “史上最全” 排序算法讲解。

排序算法的分析和评价

时间复杂度

  • 最好情况、最坏情况、平均情况时间复杂度
    分析排序算法的时间复杂度时,要分别给出最好情况、最坏情况、平均情况下的时间复杂度。之所以这样区分分析,一是便于排序算法的对比分析,二是待排序数据有的接近有序而有的则完全无序,我们需要知道排序算法在不同数据下的性能表现,从而能够在不同的场景下选择更加适合的排序算法。

  • 时间复杂度的系数、常数 、低阶
    时间复杂度反应的是数据规模 n 很大的时候的一个增长趋势,所以它表示的时候通常会忽略系数、常数、低阶。但是实际的软件开发中,我们排序的可能是 10 个、100 个、1000 个这样规模很小的数据,所以,在对同一阶时间复杂度的排序算法性能对比的时候,我们就要把系数、常数、低阶也考虑进来时间复杂度反应的是数据规模 n 很大的时候的一个增长趋势,所以它表示的时候通常会忽略系数、常数、低阶。但是实际的软件开发中,我们排序的可能是 10 个、100 个、1000 个这样规模很小的数据,所以,在对同一阶时间复杂度的排序算法性能对比的时候,我们就要把系数、常数、低阶也考虑进来

  • 比较次数和交换(或移动)次数
    基于比较的排序算法的执行过程,会涉及两种操作,一种是元素比较大小,另一种是元素交换或移动。所以,如果我们在分析排序算法的执行效率的时候,应该把比较次数和交换(或移动)次数也考虑进去。

空间复杂度
排序算法的空间复杂度引入了一个特别的概念,即原地排序 (Sorted in place),也称内部排序。原地排序算法特指空间复杂度是

十大经典排序算法详解相关推荐

  1. 十大经典排序算法详解(三)-堆排序,计数排序,桶排序,基数排序

    养成习惯,先赞后看!!! 你的点赞与关注真的对我非常有帮助.如果可以的话,动动手指,一键三连吧!!! 十大经典排序算法-堆排序,计数排序,桶排序,基数排序 前言 这是十大经典排序算法详解的最后一篇了. ...

  2. 十大经典排序算法详解(一)冒泡排序,选择排序,插入排序

    养成习惯,先赞后看!!! 你的点赞与关注真的对我非常有帮助.如果可以的话,动动手指,一键三连吧!!! 目录 1.算法的评判标准 2.排序算法的分类 3.十大经典排序算法-冒泡排序,选择排序,插入排序 ...

  3. 十大经典排序算法-桶排序算法详解

    十大经典排序算法 十大经典排序算法-冒泡排序算法详解 十大经典排序算法-选择排序算法详解 十大经典排序算法-插入排序算法详解 十大经典排序算法-希尔排序算法详解 十大经典排序算法-快速排序算法详解 十 ...

  4. 十大经典排序算法-快速排序算法详解

    十大经典排序算法 十大经典排序算法-冒泡排序算法详解 十大经典排序算法-选择排序算法详解 十大经典排序算法-插入排序算法详解 十大经典排序算法-希尔排序算法详解 十大经典排序算法-快速排序算法详解 十 ...

  5. 十大经典排序算法-选择排序算法详解

    十大经典排序算法 十大经典排序算法-冒泡排序算法详解 十大经典排序算法-选择排序算法详解 十大经典排序算法-插入排序算法详解 十大经典排序算法-希尔排序算法详解 十大经典排序算法-快速排序算法详解 十 ...

  6. 十大经典排序算法-希尔排序算法详解

    十大经典排序算法 十大经典排序算法-冒泡排序算法详解 十大经典排序算法-选择排序算法详解 十大经典排序算法-插入排序算法详解 十大经典排序算法-希尔排序算法详解 十大经典排序算法-快速排序算法详解 十 ...

  7. 十大经典排序算法-归并排序算法详解

    十大经典排序算法 十大经典排序算法-冒泡排序算法详解 十大经典排序算法-选择排序算法详解 十大经典排序算法-插入排序算法详解 十大经典排序算法-希尔排序算法详解 十大经典排序算法-快速排序算法详解 十 ...

  8. 十大经典排序算法-冒泡排序算法详解

    十大经典排序算法 十大经典排序算法-冒泡排序算法详解 十大经典排序算法-选择排序算法详解 十大经典排序算法-插入排序算法详解 十大经典排序算法-希尔排序算法详解 十大经典排序算法-快速排序算法详解 十 ...

  9. js【详解】arr.sort()数组排序(内含十大经典排序算法的js实现)

    arr.sort()默认按照Unicode编码,从小到大进行排序,会改变原数组 let arr = ["e", "b", "d", &quo ...

最新文章

  1. python语言命令大全-Linux命令大全
  2. windows安装TortoiseGit详细使用教程【基础篇】
  3. 一文读懂什么是Java中的自动拆装箱
  4. c语言rtu crc16,Modbus-RTU-crc16校验方法C语言实现
  5. 一条命令教你安装centos下面的pip服务
  6. frida hook so层、protobuf 数据解析
  7. AOE网的关键路径的计算
  8. pythonexecquery_python 进程信息
  9. 前端设计必备-Font awesome 插件使用菜鸟言语
  10. arcgis oracle srid,ArcGIS——数据库空间SQL(二、oracle中ST_GEOMETRY函数使用)
  11. 智能开关双控实现方法(附电路图)
  12. Ubuntu Screen 后台启动程序安装与运行
  13. 四连涨!海尔智家这波私有化还有多大想象空间?
  14. android 背景 投影,Android ImageView投影
  15. pd调节规律_PD 控制规律的特点是具有超前控制功能。( )
  16. 万丈高楼平地起 - 读《PHP5+MySQL网页系统开发设计》
  17. 最全Media 响应式 设置方法
  18. 树莓派3B——Mailbox
  19. 【正点原子MP157连载】第十九章 OLED实验-摘自【正点原子】STM32MP1 M4裸机CubeIDE开发指南
  20. 使用turtle库绘制倒计时数码管

热门文章

  1. aix 修改服务器时间,AIX修改系统时间
  2. .NET 桌面程序集成Web网页多种解决方案
  3. 登月6大危机曝光 阿波罗11号差点永留月球
  4. NServiceBus消息重播
  5. 2012年中国汽车企业出口排名:自主车企包揽前三
  6. 防火墙技术之安全策略
  7. 总结下chromebook刷galliumOS安装过程
  8. tensorflow 按维度相加_女司机按男司机喇叭,男司机要灭她全家_影视
  9. 成为大佬的第一步,黑客必备工具BurpSuite功能详解!
  10. 解决安装node失败 报错2503