当前位置: 首页 > news >正文

各种排序算法的再整理

各种排序算法的再整理

插入排序:就是创建一个有序序列,然后将每个数插进去n2

折半插入:就是创建一个有序序列,然后每次折半的寻找这个插入位置n2(因为找到之后,还是要从那个位置移动数组)最好情况on

希尔排序:根据增量进行排序,增量是多少就有几个组,然后先将这组利用插入排序排好,然后增量/2并向下取整复杂度:on1.3(平均)

最好:on 最坏:on2

不稳定

冒泡排序:每轮从后往前以此比较相邻两个,逆序交换

快速排序:每次找到一个枢纽,利用左右指针来寻找比枢纽小和大的元素,分别放左边和放右边(具体方法为初始有左空位,然后从r开始减少,直到遇到比枢纽值小的数,然后放入l指针位置,反过来执行,直到指针重合,放入枢纽),然后递归完成左右区间排序。

稳定

简单选择排序:每轮选最小的

堆排序:复杂度为on+nlogn

先进行建堆,从非叶子结点开始,看是否大于左右子节点,如果均小于不变,反之调整,将大的子节点与小的父节点交换,调整后要再次检查调整的子节点;

然后进行排序,排序是每次将堆顶与目前数组长度的最后一个节点交换,交换后重复如上调整,同时需要维护数组长度-1;

归并排序:我们进行logn轮的归并操作,将n个单独的子序列,不断翻倍的进行归并。

两个子序列进行归并的方式就是:双指针,选出当前更小的节点,共n次。

基数排序:每轮对一位进行排序

稳定

最大位数*(要排的数个数+桶数)

相关文章:

  • 可穿戴设备:健康监测的未来之眼
  • 我认为STM32输入只分为模拟输入 与 数字输入
  • Zookeeper 和 Kafka 版本与 JDK 要求
  • 基于Qt的app开发第十三天
  • dvwa13——CSP Bypass
  • Neo4j图数据库管理:原理、技术与最佳实践
  • Calendar类日期设置进位问题
  • jdbc查询mysql数据库时,出现id顺序错误的情况
  • 众趣科技与我爱我家达成战略合作:AI空间计算技术赋能重塑房产服务新范式
  • XDMA pcie环路测试
  • MapStruct注解完全手册:@Mapping参数详解与实战指南
  • 网络测试实战:金融数据传输的生死时速
  • 【Go】3、Go语言进阶与依赖管理
  • 软件上线前为什么要做性能测试?
  • QT开发技术【ffmpeg + QAudioOutput】音乐播放器 完善
  • 使用 HTML +JavaScript 从零构建视频帧提取器
  • 【.net core】天地图坐标转换为高德地图坐标(WGS84 坐标转 GCJ02 坐标)
  • 电脑提示dll文件缺失怎么办 dll修复方法
  • 用电脑控制keysight示波器
  • 《一生一芯》数字实验三:加法器与ALU
  • 中山做网站排名/中国新闻最新消息今天
  • 企业网站建设费用会计科目/重庆广告公司
  • wordpress内外网/seo关键词库
  • 网站建设视频讲解/seo怎么才能优化好
  • 17zwd一起做网站教学视频/企业推广
  • 移动端友好网站/2022年十大网络流行语发布