算法刷题1-10大排序算法汇总

十种常见排序算法可以分为两大类:

  • 比较类排序:通过比较来决定元素间的相对次序,由于其时间复杂度不能突破O(nlogn),因此也称为非线性时间比较类排序。
  • 非比较类排序:不通过比较来决定元素间的相对次序,它可以突破基于比较排序的时间下界,以线性时间运行,因此也称为线性时间非比较类排序。

|--------|----------|-----------|-----------|-----------|----------|-----|------|
| 排序方法 | 分类 | 时间复杂度(平均) | 时间复杂度(最坏) | 时间复杂度(最好) | 空间复杂度 | 稳定性 | 重要程度 |
| 冒泡排序 | 比较类-交换排序 | O(n*2) | O(n*2) | O(n) | O(1) | 稳定 | |
| 快速排序 | 比较类-交换排序 | O(nlogN) | O(n*2) | O(nlogN) | O(nlogN) | 不稳定 | |
| 简单插入排序 | 比较类-插入排序 | O(n*2) | O(n*2) | O(n) | O(1) | 稳定 | |
| 希尔排序 | 比较类-插入排序 | O(n*1.3) | O(n*2) | O(n) | O(1) | 不稳定 | |
| 简单选择排序 | 比较类-选择排序 | O(n*2) | O(n*2) | O(n*2) | O(1) | 不稳定 | |
| 堆排序 | 比较类-选择排序 | O(nlogN) | O(nlogN) | O(nlogN) | O(1) | 不稳定 | |
| 归并排序 | 比较类-归并排序 | O(nlogN) | O(nlogN) | O(nlogN) | O(n) | 稳定 | |
| | | | | | | | |
| 计数排序 | 非比较类 | O(n+k) | O(n+k) | O(n+k) | O(n+k) | 稳定 | |
| 桶排序 | 非比较类 | O(n+k) | O(n**2) | O(n) | O(n+k) | 稳定 | |
| 基数排序 | 非比较类 | O(n*k) | O(n*k) | O(n*k) | O(n+k) | 稳定 | |

指标解释:

  • 稳定:如果a原本在b前面,而a=b,排序之后a仍然在b的前面。
  • 不稳定:如果a原本在b的前面,而a=b,排序之后 a 可能会出现在 b 的后面。
  • 时间复杂度:对排序数据的总的操作次数。反映当n变化时,操作次数呈现什么规律。
  • 空间复杂度:是指算法在计算机内执行时所需存储空间的度量,它也是数据规模n的函数。

参考:

https://www.cnblogs.com/onepixel/p/7674659.html

相关推荐
罗湖老棍子18 分钟前
C Looooops(信息学奥赛一本通- P1640)
算法·数论·同余·裴蜀定理·扩展欧几里得
飘尘3 小时前
从"算子"到"AI Infra":大模型背后看不见的那群人在忙什么
人工智能·算法·面试
mokongJ3 小时前
17 份异构销售数据的合并清洗方案:30 万行处理耗时 9.64 秒
数据结构
夏幻灵3 小时前
每日一题:LeetCode 3:无重复字符的最长子串——滑动窗口思路详解
算法·leetcode·职场和发展
CarIise4 小时前
Java实训阶段查漏补缺复习笔记2
java·linux·算法
无忧.芙桃4 小时前
C++ 并查集详解:原理、实现与应用
c语言·c++·算法·leetcode
蛋蛋的就会顺顺的4 小时前
hot100——二叉树
java·数据结构·算法·leetcode·力扣
Code_Solitude5 小时前
c语言:二分法的完整补充
c语言·开发语言·算法
一切皆是因缘际会5 小时前
掌控信息论:同源星际通信基础理论
人工智能·算法·ai
List<String> error_P6 小时前
freertos数据结构--链表
数据结构·链表