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

各种排序算法的再整理

各种排序算法的再整理

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

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

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

最好:on 最坏:on2

不稳定

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

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

稳定

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

堆排序:复杂度为on+nlogn

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

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

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

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

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

稳定

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

http://www.xdnf.cn/news/884971.html

相关文章:

  • 【Nginx】使用 Nginx+Lua 实现基于 IP 的访问频率限制
  • 命令行运行python程序报错 ImportError: /lib/x86_64-linux-gnu/libstdc++.so.6
  • Cursor AI编程助手模型选择对了吗?
  • mysql跨库关联查询及视图创建
  • 机器学习——什么时候使用决策树
  • PostgreSQL 入门教程
  • 边缘计算应用实践心得
  • 防反接电路设计浅谈
  • 在使用一些不用驱动大电流的设备就可以用stm32的自己的上下拉但是本身上下拉不就是给iicspi这些他通信给信号的吗中怎么还跟驱动能力扯上了有什么场景嘛
  • Wireshark使用教程(含安装包和安装教程)
  • Kafka存储机制核心优势剖析
  • 数据库-MySQL
  • Ubuntu中常用的网络命令指南
  • 8.axios Http网络请求库(1)
  • 洛谷题目:P2761 软件补丁问题 (本题简单)
  • Unity基础-Mathf相关
  • NoSQL 之 Redis 配置与优化
  • 护网面试题目2025
  • Windows下安装MySQL8.X
  • 渗透实战PortSwigger靶场-XSS Lab 14:大多数标签和属性被阻止
  • RK3588 RTL8211F PHY的LED灯调试
  • 能做超厚铜pcb工厂有哪些?
  • MLP实战二:MLP 实现图像数字多分类
  • 大中型水闸安全监测管理系统建设方案
  • Authpf(OpenBSD)认证防火墙到ssh连接到SSH端口转发技术栈 与渗透网络安全的关联 (RED Team Technique )
  • 机器学习的数学基础:决策树
  • 今日学习:ES8语法 | Spring整合ES | ES场景八股
  • Python html 库用法详解
  • Selenium 和playwright 使用场景优缺点对比
  • 使用Python提取照片元数据:方法与实战指南