码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 排序算法(未完)


    诸神缄默不语-个人CSDN博文目录

    同步在做讲解视频系列。

    文章目录

    • 0. 排序算法的稳定性分析
    • 1. 插入排序/直接插入排序
      • 1.1 希尔排序
      • 2. 简单选择排序
    • 3. 堆排序
    • 4. 冒泡排序
    • 5. 快速排序
    • 6. 归并排序
    • 7. 桶排序/箱排序
    • 8. 基数排序/分配式排序/桶子法
      • 1. 最低位优先(Least Significant Digit first) LSD法
      • 2. 最高位优先(Most Significant Digit first) MSD法
    • 9. 计数排序
    • 参考资料

    0. 排序算法的稳定性分析

    1. 插入排序/直接插入排序

    类似手工排序扑克牌,每次把一个元素按顺序放到最前面顺序排好的子数组里(一开始这个子数组只有第一个元素)
    在实现中一般是目标元素一步一步一边比大小一边往左挪,直到挪到顺序为止
    时间复杂度 O(N^2),空间复杂度 O(1)
    稳定的

    1.1 希尔排序

    分组进行插入排序,组数逐渐减到1
    不稳定的

    2. 简单选择排序

    每次迭代找最小的元素,放到最前面

    3. 堆排序

    先建立一个无序的堆,然后迭代所有非叶节点(从最后一个开始)对每一个进行堆化(大概来说就是研究这个节点是不是该往子节点下沉,一路下沉到合适的位置上)

    每次取出根节点,进行自顶向下堆化,将新的根节点放在原本最后一个节点那里的位置

    4. 冒泡排序

    一个指针滑,比较后一位与指针位的大小差异,如果前大后小就交换一下,总之每次都把一个最大的保送到最后一位。(可以增加flag标记,如果已经有序即无需移动,就停止下一次迭代)

    5. 快速排序

    每次将数字分成一大组和一小组

    6. 归并排序

    1. 把整个数组拆成很多顺序的小数组(从1个数字开始),将小数组顺序合并
    2. 将两个顺序序列合并成一个顺序序列。两个序列每个放一个指针,对比元素大小,然后把小的元素放进新空间,然后指针往后走,这样一直走到一个序列被遍历完。

    7. 桶排序/箱排序

    分桶,对每个桶各自进行排序

    8. 基数排序/分配式排序/桶子法

    稳定的

    O ( n log ⁡ ( r ) m ) O (n\log(r)m) O(nlog(r)m)

    1. 最低位优先(Least Significant Digit first) LSD法

    (这简称看起来也太容易产生误会了)

    以最低位的数开始进行分配,每次分配完后再按组合并,再重新分配,直至分完所有数位

    适合位数小的数列

    2. 最高位优先(Most Significant Digit first) MSD法

    与LSD法相反,从最高位为基底开始进行分配,每次分配之后再在分组中建立子桶进行分配,直至分到最后一位

    9. 计数排序

    就是非常粗暴地直接按元素放到新数组的索引里

    参考资料

    1. 基数排序_百度百科
    2. JAVA之基数排序LSD顺序_lsd算法 java_二个二个二的博客-CSDN博客
    3. 八大排序算法稳定性分析,原来稳定性是这个意思…-腾讯云开发者社区-腾讯云
  • 相关阅读:
    C++类和对象2
    AT24C02 by stm32f103 hal
    3. 查询处理
    Jetbrains学生邮箱教育认证,操作避坑指南!!!!!!
    传感器信息系统中的节能收集研究(Matlab代码实现)
    【Oculus Interaction SDK】(九)使用控制器时显示手的模型
    java基于微信小程序的旅游网站 uniapp 小程序
    别对蔚来手机抱太大希望
    vue使用ant design Vue中的a-select组件实现下拉分页加载数据
    zeno使用方法笔记
  • 原文地址:https://blog.csdn.net/PolarisRisingWar/article/details/132915194
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号