八大排序算法

  • 一、冒泡排序
  • 二、选择排序
  • 三、快速排序
  • 四、归并排序
  • 五、堆排序
  • 六、直接插入排序
  • 七、希尔排序
  • 八、基数排序

排序,就是使一串记录,按照其中的某个或某些关键字的大小,递增或 递减的排列起来的操作。

一、冒泡排序

从第一个元素开始,每次比较相邻元素,如果元素顺序不正确,则进行交换,否则,比较下一对相邻元素。重复上述过程,直到所有元素都有序。

冒泡排序每次都可以将一个最值排到队尾,像水里冒泡泡一样,大的先浮上来,所以叫冒泡排序。

二、选择排序

选择数组最小的元素,与数组第一个元素交换,然后选择剩余的数组元素中最小的元素,与数组第二个元素交换,一直重复上述操作,直到数组有序。

选出第一小的与第一位交换,选出第二小的与第二位交换,直到全部有序。

三、快速排序

先选一个元素作为基点,将其余元素比基点小的放左边,比基点大的放右边,然后分别对左边和右边重复以上操作,直到所有元素有序。

四、归并排序

假设初始序列含有n个记录,则可看成是n个有序的子序列,每个子序列的长度为1,然后两两归并,得到[n/2]个长度为2或1的有序子序列,再两两归并,如此重复,直到得到一个长度为n的有序序列为止。

五、堆排序

以从小到大排序为例,先建立大顶堆,然后取出堆顶元素(堆顶元素一定是当前堆中的最大值),将堆的最后一个元素放置到堆顶。这时,并不是一个大顶堆,然后调整堆使其成为大顶堆,然后将堆顶元素取出,重复上述过程,直到最后一个元素。

六、直接插入排序

假设元素存储在数组 g 中,共有 n 个元素,依次遍历每一个元素,将元素 g[i] 按大小顺序插入到 0 ~ i 的位置。一直重复插入,直到第n个元素。

将第一个元素看作有序表,遍历2~n号元素,依次插入已构成的有序表的恰当位置,使之成为新的有序表。

七、希尔排序

通过设置一个增量n,大小为数组长度的一半,将间隔为n的元素视作一个组,然后对每个组内部的元素进行插入排序,然后再将增量n缩小为一半,再次进行分组插入排序,直到增量为1,即所有元素有序。

希尔排序是插入排序的改进版本,弥补了插入排序在某些情况下的缺点。

八、基数排序

按照数字的位数进行排序,即:先排个位,再排十位,再排百位……。有10个桶,标号为0~9。排序个位时,按照个位值的不同,分配到10个桶中(0分配到0号桶,1分配到1号桶,以此类推),然后将分配后的结果收集,这时候数组是按照个位排序的。继续按照十位重复上述排序过程,一直排序完所有的位数(取决于数组中最大数的位数)。

八大排序算法(理论和动态图)相关推荐

  1. C语言八大排序算法,附动图和详细代码解释!

    文章来源:电子工程专辑.C语言与程序设计.竹雨听闲 一.前言 如果说各种编程语言是程序员的招式,那么数据结构和算法就相当于程序员的内功. 想写出精炼.优秀的代码,不通过不断的锤炼,是很难做到的. 二. ...

  2. 硬核!C语言八大排序算法,附动图和详细代码解释!

    来源 :C语言与程序设计.竹雨听闲等 一 前言 如果说各种编程语言是程序员的招式,那么数据结构和算法就相当于程序员的内功. 想写出精炼.优秀的代码,不通过不断的锤炼,是很难做到的. 二 八大排序算法 ...

  3. c语言的八大排序算法,程序员的内功:C语言八大排序算法

    四 一.冒泡排序 冒泡排序算法的运作如下: ●比较相邻的元素.如果第一个比第二个大,就交换他们两个. ●对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对.这步做完后,最后的元素会是最大的数. ...

  4. 八大排序算法——(万字图文详解)

    本篇文章是我对之前写过的八个排序算法的总结,感兴趣的小伙伴可以去我的八大排序算法专栏浏览,也可以点击下方标题跳转. 提示:本篇博客篇幅较长,建议小伙伴们查看目录,按需浏览 目录 正文 1 直接插入排序 ...

  5. 图解八大排序算法——我见过的最详细的讲解(转)

    一.分类 1.内部排序和外部排序 内部排序:待排序记录存放在计算机随机存储器中(说简单点,就是内存)进行的排序过程. 外部排序:待排序记录的数量很大,以致于内存不能一次容纳全部记录,所以在排序过程中需 ...

  6. 用python排序算法_Python - 八大排序算法

    1.序言 本文使用Python实现了一些常用的排序方法.文章结构如下: 1.直接插入排序 2.希尔排序 3.冒泡排序 4.快速排序 5.简单选择排序 6.堆排序 7.归并排序 8.基数排序 上述所有的 ...

  7. 八大排序算法:插入(2:插入、希尔)、选择(2:选择、堆)、交换(2:冒泡、快速)、归并、基数

    八大排序算法 发表于2012/7/23 16:45:18  662397人阅读 分类: c/c++ 数据结构与算法 概述 排序有内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排 ...

  8. 八大排序算法简明扼要

    八大排序算法 冒泡排序(暴力排序).选择排序.快速排序.归并排序(后序排序).链式基数排序.插入排序.希尔排序.堆排序. 拥有相关性的排序: (选择排序.快速排序):(插入排序.希尔排序): 时间复杂 ...

  9. 八大排序算法(java实现) 冒泡排序 快速排序 堆排序 归并排序 等

    八大排序算法 一.直接插入 - 1.基本思路 - 2.代码实现 - 3.时间复杂度和空间复杂度 二.希尔排序 - 1.基本思路 - 2.代码实现 - 3.时间复杂度和空间复杂度 三.简单选择 - 1. ...

最新文章

  1. Exchange Server 2013 安装完成后配置外部URL
  2. 【TensorFlow】:Eager Mode(动态图模式)
  3. FxCop的一些规范建议
  4. dubbo是长连接还是短连接_从快手短视频看,内容平台如何做好产品与用户的连接及运营实操...
  5. Document Builder: 如何分析document template里某个字段未被web service填充的问题
  6. 【接口时序】2、Verilog实现流水灯及与C语言的对比
  7. Linux上Java的安装与配置,java初级面试笔试题
  8. RTP发送和接收(有图为证)
  9. Centos6.5 恢复误删的系统面板
  10. 【POJ3349】Snowflake Snow Snowflakes(哈希表判重,维护一个集合)
  11. 激光雷达的KPI与技术方案
  12. autojs 文件转base64
  13. 关于wineQQ8.9.19983deepin23版本提升不能在使用请升级,Linux偷懒升级方法
  14. Smartdrv程序有什么作用
  15. 操作系统PV编程题目总结一
  16. 计算机网络原理实验实验七:分析IP报文结构
  17. 全部就业!最高薪资12.5K,黑马这两个学科好牛!
  18. 关于电视剧《狂飙》的一点感悟--贵人相助的重要性
  19. Mac OS X下的动态链接库
  20. BI神器Power Query(14)-- PQ制作时间维度表(3)

热门文章

  1. 将keras的h5模型转化为onnx
  2. bigqury 认证
  3. bigquery sql 正则表达式
  4. winform point数组带数值_带你学够浪:Go语言基础系列 - 8分钟学复合类型
  5. 论文笔记:HKMF-T: Recover From Blackouts in TaggedTime Series With Hankel Matrix Factorization
  6. leetcode 目录
  7. MATLAB从入门到精通-机械动力学仿真-Amesim仿真实例:对于任意的外力作用下的机械动力学仿真
  8. Flink从入门到精通100篇(十)-双亲委派模型与 Flink 的类加载策略
  9. 数据中台(二)数据质量分析及提升
  10. 深度学习核心技术精讲100篇(十八)-巨量数据下美团是如何实现数据治理的?