当前位置: 首页 > 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://www.xdnf.cn/news/1475083.html

相关文章:

  • 20250906-01:开始创建LangChain的第一个项目
  • 虚拟化技术
  • 文件I/O与I/O多路复用
  • 外置flash提示音打包脚本
  • 版本发布流程手册:Release分支规范与Bug分级标准全解析
  • [C++刷怪笼]:搜索二叉树--便利的查找工具
  • 【数据库相关】TxSQL新增数据库节点步骤
  • Nmap使用手册
  • 第08章 聚合函数
  • 数据结构:查找
  • Matplotlib 动态显示详解:技术深度与创新思考
  • 【3D算法技术】blender中,在曲面上如何进行贴图?
  • 少儿舞蹈小程序(9)校区信息展示
  • MAZANOKE与cpolar:打造安全可控的照片云端管理系统
  • 01-线上问题处理-树形结构拼接
  • 数据库原理及应用_数据库管理和保护_第5章数据库的安全性_理论部分
  • [光学原理与应用-436]:晶体光学 - 各向同性与各向异性是描述材料物理性质随方向变化特性
  • STAR-CCM+|雷诺数回顾
  • windows11 安装charm成功
  • U-Boot 多 CPU 执行状态引导
  • 【LeetCode热题100道笔记】验证二叉搜索树
  • 深入浅出迁移学习:从理论到实践
  • 基于YOLO8的汽车碰撞事故检测系统【数据集+源码+文章】
  • 10.LED+TIR透镜优化——lighttools入门笔记
  • SpringBootWeb 篇-深入了解 ThreadLocal 存在内存泄漏问题
  • 记一次uniapp微信小程序开发scss变量失效的问题
  • 5-10数组元素添加和删除(数组基础操作)
  • 【Python自动化】 21.1 Pandas 读取 Excel 文件的完整指南
  • 从挑西瓜到树回归:用生活智慧理解机器学习算法
  • 【Python】数据可视化之分布图