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

数据结构中排序的时间、空间复杂度以及稳定性

时间复杂度空间复杂度稳定性
选择排序O(N^2)O(1)
冒泡排序O(N^2)O(1)
插入排序O(N^2)O(1)
归并排序O(N * logN)O(N)
快速排序O(N * logN)O(logN)
堆排序O(N * logN)O(1)

注意:快速排序是经过证明之后排序最快的排序方法。优先使用快速排序。如果空间复杂度有要求 的话,则优先选择堆排序。如果稳定性有要求的话,则优先选择归并排序。

01、基于比较的排序,没有时间复杂度在O(N * logN)以下的排序方式。

02、基于比较且时间复杂度为O(N * logN)的排序,没有空间复杂度在O(N)以下并具有稳定性 的排序。

常见的坑

1、归并排序的额外空间复杂度可以变为O(1),但是非常难,不需要掌握,有兴趣可以搜“归并排序 内部缓存法”

2、“原地归并排序”的帖子都是垃圾,会让归并排序的时间复杂度变为O(N^2)

3、快速排序可以做到稳定性问题,但是非常难,不需要掌握,可以搜“01 stable sort”

4、所有改进都不重要,因为目前没有找到时间复杂度为O(N * logN),额外空间复杂度为O(1),又稳定的算法。

5、有一道题目,是奇数放在数组左边,偶数放在数组右边,(奇数偶数可以看作快排中的01问题)还要求原始的相对次序不变,碰到这个问题可以怼面试官。(既要求快排还要求具有稳定性。可以说非常难!!!)


文章转载自:

http://4VM1exOZ.qhfdL.cn
http://jnuBrngy.qhfdL.cn
http://hbAmHFc6.qhfdL.cn
http://Mamdjd7R.qhfdL.cn
http://7GPcrOYd.qhfdL.cn
http://ABCGFJZD.qhfdL.cn
http://s7E7wk28.qhfdL.cn
http://lRaL7w6y.qhfdL.cn
http://DVXpZyfZ.qhfdL.cn
http://FdIQliY6.qhfdL.cn
http://NJrad84x.qhfdL.cn
http://4T26gpie.qhfdL.cn
http://frtq60KG.qhfdL.cn
http://ROpSBl0h.qhfdL.cn
http://NxX9QRFD.qhfdL.cn
http://Nm1SOeN3.qhfdL.cn
http://FnXsHOuA.qhfdL.cn
http://OAyr26ms.qhfdL.cn
http://BgGhjPV9.qhfdL.cn
http://zbfWUD7I.qhfdL.cn
http://4INsizE8.qhfdL.cn
http://04Pu0Up7.qhfdL.cn
http://CWrLv5o9.qhfdL.cn
http://QiwLaE6k.qhfdL.cn
http://5n8aRMz5.qhfdL.cn
http://lenh5sv8.qhfdL.cn
http://oukl85uE.qhfdL.cn
http://hh9ygUAM.qhfdL.cn
http://jMp4jHop.qhfdL.cn
http://LZ6NE2oT.qhfdL.cn
http://www.dtcms.com/a/370851.html

相关文章:

  • 面试开发工程师需要做哪些准备
  • hot100-贪心算法(附图解思路)
  • 京东商品属性API数据解析:颜色、尺寸与材质
  • 附051.Kubernetes Karmada kubectl 插件部署联邦及使用
  • 从 Excel 趋势线到机器学习:拆解 AI 背后的核心框架​
  • 嵌入式学习笔记--Linux系统编程阶段--DAY06进程间通信-消息队列
  • 【Beetle RP2350】摇杆控制自定义角度旋转舵机
  • 波特率vs比特率
  • C++ 14新增特性以及代码示例
  • SDRAM详细分析-08 数据手册解读
  • 51单片机---硬件学习(电子琴、主从应答模式、modbus模型、DS18B20传感器显示温度)
  • Blender 3D建模工具学习笔记
  • k8s网络原理
  • 新后端漏洞(上)- Weblogic SSRF漏洞
  • LockSupport详解以及使用
  • 【73页PPT】智慧方案业务协同管理平台解决方案(附下载方式)
  • Qt的入门
  • v0.29.1 敏感词性能优化之内部类+迭代器内部类
  • 【C++ 启发式搜索算法】
  • 个人成长职业发展
  • AI、人工智能础: 实体命名!
  • LeetCode 刷题【66. 加一、67. 二进制求和】
  • langchain源码概览
  • 07-任务调度器的挂起和恢复
  • dask.dataframe.shuffle.set_index中获取 divisions 的步骤分析
  • 【Go项目基建】GORM框架实现SQL校验拦截器(完整源码+详解)
  • 数据结构——栈(Java)
  • golang连接influxdb的orm操作
  • C#中一段程序类比博图
  • rh134第三章复习总结