• Java | 排序内容大总结


    不爱生姜不吃醋⭐️
    如果本文有什么错误的话欢迎在评论区中指正
    与其明天开始,不如现在行动!


    🌴前言

    本文内容是关于选择排序、冒泡排序、插入排序、归并排序、快速排序、堆排序的时间复杂度、空间复杂度和稳定性的总结。


    🌴算法整理

    排序算法时间复杂度额外空间复杂度稳定性
    选择排序 O ( N 2 ) O(N^{2}) O(N2) O ( 1 ) O(1) O(1) × × ×
    冒泡排序 O ( N 2 ) O(N^{2}) O(N2) O ( 1 ) O(1) O(1) √ √
    插入排序 O ( N 2 ) O(N^{2}) O(N2) O ( 1 ) O(1) O(1) √ √
    归并排序 O ( N ∗ l o g N ) O(N*logN) O(NlogN) O ( N ) O(N) O(N) √ √
    快速排序 O ( N ∗ l o g N ) O(N*logN) O(NlogN) O ( l o g N ) O(logN) O(logN) × × ×
    堆排序 O ( N ∗ l o g N ) O(N*logN) O(NlogN) O ( 1 ) O(1) O(1) × × ×

    一般的排序选择:快速排序
    因为快速排序经过实验它的常数项是最低的

    有空间限制的话选择:堆排序

    需要稳定性的话选择:归并排序

    小样本量排序:使用时间复杂度为 O ( N 2 ) O(N^{2}) O(N2) 的算法,比如:插入排序

    大样本量排序:使用时间复杂度为 O ( N ∗ l o g N ) O(N*logN) O(NlogN)的算法,比如:快速排序

    🌴两个结论

    基于比较的排序,有没有时间复杂度比 O ( N ∗ l o g N ) O(N*logN) O(NlogN) 小的排序算法:目前没有

    在时间复杂度为 O ( N ∗ l o g N ) O(N*logN) O(NlogN) 下,有没有空间复杂度比 O ( N ) O(N) O(N)小的且稳定的排序算法:目前没有


    🌴总结

    文章本文内容是关于排序算法内容的大总结,多加练习熟能生巧。
    本文中若是有出现的错误请在评论区或者私信指出,我再进行改正优化,如果文章对你有所帮助,请给博主一个宝贵的三连,感谢大家😘!!!


  • 相关阅读:
    逮到一个阿里10年老测试员,聊过之后收益良多...
    Rust中Option、Result的map和and_then的区别
    深入docker-swarm overlay网络模型
    二极管如何工作?
    pycharm 快捷键 及 高级设置
    关于图神经网络(GNN),有哪些创新点
    Harmony 个人中心(页面交互、跳转、导航、容器组件)
    rsync远程同步
    Qt —UDP通信QUdpSocket 简介 +案例
    jbase仪器接口设计
  • 原文地址:https://blog.csdn.net/weixin_54620350/article/details/132777838