排序算法 | 最好时间复杂度 | 平均时间复杂度 | 最坏时间复杂度 | 空间复杂度 | 是否稳定 |
---|---|---|---|---|---|
冒泡排序 | \(O(n)\) | \(O({n^2})\) | \(O({n^2})\) | \(O(1)\) | 是 |
选择排序 | \(O({n^2})\) | \(O({n^2})\) | \(O({n^2})\) | \(O(1)\) | 不是 |
直接插入排序 | \(O(n)\) | \(O({n^2})\) | \(O({n^2})\) | \(O(1)\) | 是 |
归并排序 | \(O(n\log n)\) | \(O(n\log n)\) | \(O(n\log n)\) | \(O(n)\) | 是 |
快速排序 | \(O(n\log n)\) | \(O(n\log n)\) | \(O({n^2})\) | 最好:\(O(\log n)\) 最差:\(O(n)\) | 不是 |
希尔排序 | \(O(n)\) | \(O({n^{1.3}})\) | \(O({n^2})\) | \(O(1)\) | 不是 |
相关文章
- 各种排序算法的时间空间复杂度
- 常见排序算法的稳定性分析和结论
- Java实现经典排序算法及复杂度稳定性分析
- 青少年编程与数学 02-016 Python数据结构与算法 11课题、分治-三、分治算法的复杂度分析
- 一道看上去很吓人的算法面试题:如何对n个数进行排序,要求时间复杂度O(n),空间复杂度O(1)
- 排序算法-插入排序-初始状态: 将数组分为已排序部分和未排序部分。初始时,已排序部分只包含第一个元素,而未排序部分包含其余的元素。逐步构建有序序列: 从未排序部分取出第一个元素,将其插入到已排序部分的正确位置,使得已排序部分仍然保持有序。比较并移动: 将取出的元素与已排序部分的元素逐一比较,找到其正确的插入位置。为了插入,可能需要将比它大的元素依次向右移动,为新元素腾出插入的位置。重复步骤 2-3: 重复以上步骤,每次取出未排序部分的一个元素,插入到已排序部分的正确位置。这样,已排序部分逐渐增加,未排序部分逐渐减小。直到排序完成: 重复上述过程,直到未排序部分为空,整个数组就被排序完成了。 插入排序代码
- 数据结构中常用的排序算法 && 时间复杂度 && 空间复杂度
- 排序总结---常用的排序算法总结,java和js实现
- 各种常见排序算法的时间/空间复杂度 是否稳定 算法选取的情况 改进 思维导图整理
- AI:大模型领域最新算法SOTA核心技术要点总结(一直持续更新)、大模型实战与理论经验总结(训练优化+代码实战+前沿技术探讨+最新案例应用)、带你精细解读多篇优秀的大模型论文、AI领域各种工具产品集合