文章目录

  • 排序的概念
    • 常见的排序算法
  • 冒泡排序
  • 堆排序
  • 插入排序
  • 希尔排序(缩小增量排序)
  • 选择排序
  • 快速排序
    • 划分
      • 一、Hoare版本
      • 二、挖坑法
      • 三、前后指针
    • 整体排序——递归
    • 优化
      • 针对选key的优化——三数取中
      • 小区间优化
    • 整体排序——迭代
  • 归并排序
    • 递归
    • 迭代
    • 内排序 外排序
  • 计数排序
  • 总结

排序的概念

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

稳定性:假定在待排序的记录序列中,存在多个具有相同的关键字的记录,若经过排序,这些记录的相对次序保持不变,即在原序列中,r[i]=r[j],且r[i]在r[j]之前,而在排序后的序列中,r[i]仍在r[j]之前,则称这种排序算法是稳定的;否则称为不稳定的。

  • 稳定的意义:

    • 稳定的排序算法不会改变相同的值的相对顺序,而相同的值可能带有不同的含义。

    • 比如将学生按总分排名,如总分相同,按数学排名。那么先将他们按数学排名,然后使用稳定的算法对总分排名,这样就能保证总分相同时数学排名的相对位置不变。

内部排序:数据元素全部放在内存中的排序。

外部排序:数据元素太多不能同时放在内存中,根据排序过程的要求不能在内外存之间移动数据的排序。

常见的排序算法

我们之前已经学过冒泡排序和堆排序,下面简单复习一下。

注:本文的所有排序默认排升序

冒泡排序

冒泡排序一般是第一个学习的排序算法。我们也用它模拟过qsort的传参实现了一个通用的冒泡排序

八大排序 —— 详细图文讲解相关推荐

  1. 八大排序算法图文讲解

    排序算法可以分为内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部的排序记录,在排序过程中需要访问外存. 常见的内部排序算法有:插入排序.希尔排序. ...

  2. NFS共享存储服务(详细图文讲解)

    NFS共享存储服务(详细图文讲解) 文章目录 一.概述 (一)NFS(Network File System)网络文件系统 (二).NFS文件共享服务的搭建 1.具体操作步骤 在服务器上操作: 在客户 ...

  3. 8大排序算法图文讲解

    排序算法可以分为内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部的排序记录,在排序过程中需要访问外存. 常见的内部排序算法有:插入排序.希尔排序. ...

  4. 8大排序算法图文讲解转

    本文链接:http://www.cricode.com/3212.html 作者:快课网--Jay13  转载请务必保留作者出处,谢谢! 排序算法可以分为内部排序和外部排序,内部排序是数据记录在内存中 ...

  5. 八大排序的思想讲解与排序算法可视化

      可视化的动图可以帮助我们理解排序算法,在了解了排序算法的思想后,观察动图可以加深我们对排序算法的理解.   本文全部代码已上传Gitee. 文章目录 一.插入排序 1.直接插入排序 2.希尔排序 ...

  6. php和python的选择排序算法,图文讲解选择排序算法的原理及在Python中的实现

    def sort_choice(numbers, max_to_min=True): """ 我这没有按照标准的选择排序,假设列表长度为n,思路如下: 1.获取最大值x, ...

  7. 微信小程序详细图文讲解

    很多朋友都认为微信小程序申请.部署.发布很难,需要很长时间. 实际上,微信和腾讯云同是腾讯产品,已经提供了10分钟(根据准备资源情况,已完成小程序申请认证)完成小程序开发.部署.发布的方式.当然,实现 ...

  8. DFT、DTFT、DFS 详细图文讲解

    很多同学学习了数字信号处理之后,被里面的几个名词搞的晕头转向,比如DFT,DTFT,DFS,FFT,FT,FS等,FT和FS属于信号与系统课程的内容,是对连续时间信号的处理,这里就不过多讨论,只解释一 ...

  9. 肝了一星期,终于把堆的创建、插入、删除和堆排序肝完了(超详细图文讲解)

    目录 1.什么是堆? 2.什么是二叉堆? 3.堆的存储 4.堆的实现 (1)最大堆的插入 (2)最大堆的删除 (3)最大堆的创建.插入和删除完整代码实现 (4)最大堆的排序 1.什么是堆? 如果有一个 ...

最新文章

  1. 采摘工人月薪十万却无人应聘,英澳农场求助 AI
  2. python 程序设计思维_Python程序设计与算法思维
  3. 他89岁,拿下人生第3个博士学位,横跨医学物理学,只为“实现儿时梦想”
  4. 西安科技大学计算机考研难度,西安科技大学考研难吗
  5. 解决git push 中remote: Permission to xxxxx.git denied to xxx. fatal: unable to access xxxx 403(转)
  6. 255.0.0.0子网掩码相应的cidr前缀表示法是?_【洛谷日报#246】浅谈表达式的求值(Vol.2 进阶)...
  7. 那些鼓吹国内首个.NET 5框架的,该醒醒了!
  8. React17事件委托的变更
  9. 蓝桥杯 ALGO-111 算法训练 明明的随机数
  10. 灰色模型 java代码_灰色模型的简单Java实现
  11. 【java学习之路】(javaWeb【后端】篇)002.Servlet
  12. 杨辉三角程序(一步步优化)
  13. 黑客获取数据信息的目的和进攻手段及应对之策
  14. 日更100天(53)每天进步一点点
  15. 如何修复word文档损坏的?
  16. 芬兰建筑师帕特里克•艾瑞克森先生一行再次到访云创
  17. 计算机混合运算java,大话Java混合运算规则
  18. 计算机网络 之 局域网
  19. matlabrobert锐化_Matlab图像处理系列3———空间域锐化滤波器
  20. 【实践案例分享】58的商业DMP数据管理平台的架构与实践

热门文章

  1. 2020最新短链接(防洪‘红’缩短网址)即视源码
  2. js 对应思想 实现 汽车尾号限行
  3. 如何将一个python文件打包成一个可执行的小程序
  4. 2020B证(安全员)考试及B证(安全员)实操考试视频
  5. 10月24日-吴恩达机器学习P72-77
  6. micro usb接口正负极_手机接口的更新换代,怎么也能把我们的手机给淘汰?
  7. 数学和中国文学的比较
  8. 前端常见的一些正则表达式(一定范围内数字、小数位数、手机号、中英文名字包含少数名族)
  9. 当今世界智商最高十大天才
  10. 异化之地未能成功连接服务器,异化之地成就系统