码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 关于排序算法的小结


    属于稳定排序的算法有:冒泡排序、插入排序(包括直接插入和折半插入)、归并排序、基数排序、计数排序、桶排序

    属于原地排序的算法有:冒泡排序、插入排序、选择排序、堆排序、中值排序、快速排序、希尔排序

    既稳定又是原地排序的算法有:冒泡排序、插入排序

    各排序算法详细性能小结

    算法名称

    原地排序

    稳定排序

    时间复杂度(最佳/最差/平均)

    适用的情景

    冒泡排序

    yes

    yes

    O(n*n)/O(n*n)/O(n*n)

    仅对于少量数据的排序才会适用,但相对来说并没有什么很大的优势

    插入排序

    yes

    yes

    O(n)/O(n*n)/O(n*n)

    在处理小数据尤其是数据基本上已排好序的前提下,则插入排序当属首选了。不过仍然逃不过只能适用于小量数据的排序,数量一般不超过1000

    选择排序

    yes

    no

    O(n*n)/O(n*n)/O(n*n)

    交换的次数比冒泡排序来说要少一点,而且也较好实现,不过仍然仅限于少量数据的处理

    堆排序

    yes

    no

    O(nlogn)/O(nlogn)/O(nlogn)

    堆排序不是一个稳定的排序,而且非常频繁的移动数据,建议不要使用在基于值的数据,但可以用于指针类型排序。

    中值排序

    yes

    no

    O (nlogn)/ O (n2)/ O (nlogn)

    和快速排序基本相同,但快速排序应用得更广泛一点。

    快速排序

    yes

    no

    O (nlogn)/ O (n2)/ O (nlogn)

    应用相当的广泛,必须熟练掌握的算法之一。但因为不是一个稳定排序,所以在要求具有稳定性的情况下是不能够适用的。

    归并排序

    no

    yes

    O (n)/ O (nlogn)/ O (nlogn)

    在时间复杂度上相对快速排序来说并没有什么太大优势,空间复杂度却有较高,所以在快速排序面前基本上没有什么太大优势,但也是最好熟练掌握的一种算法

    希尔排序

    yes

    no

    O(n)/O(n)/根据步长来具体确定

    比较偏门的算法吧,应用之处倒也没有什么特别要求,全凭环境而定吧

    计数排序

    no

    yes

    O(n)/O(n)/O(n)

    在数据范围很小时,这个就基本上是最实用高效的算法了吧

    基数排序

    no

    yes

    O(n)/O(n)/O(n)

    和桶排序的思想类似,但基本上是单一的应用在数值排序上

    桶排序

    no

    yes

    O(n)/O(n)/O(n)

    当数据能够以一个快速hash函数均匀的分配时,桶排序就是最快的排序算法了

  • 相关阅读:
    聊聊JAVA中的锁优化锁升级及其底层原理剖析
    【【萌新的FPGA学习之按键控制蜂鸣器之消抖介绍】】
    ROS-6.参数的使用
    第十四届蓝桥杯(web应用开发)模拟赛2期 -大学组
    Python:熬夜把内置库函数整理成合集了,不要错过 ❢
    项目开发过程中,成员提离职,怎么办?
    【实战】硅基物语.AI写作高手:从零开始用ChatGPT学会写作
    Java Web笔记 cookie
    02_单片机及开发板介绍
    facebook怎么加好友
  • 原文地址:https://blog.csdn.net/zzjlhlcd/article/details/127711953
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | 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号