算法的时间复杂度排序
O(1) < O(log2nlog_2nlog2n) < O(nnn) < O(nlog2nnlog_2nnlog2n) < O(n2n^2n2) < O(n3n^3n3) < O(nkn^knk) < O(2n2^n2n)
注意:这里的logn 均为以2为底
| - | 排序算法 | 平均时间 | 最差情形 | 稳定度 | 额外空间 | 备注 |
|---|---|---|---|---|---|---|
| 1 | 冒泡排序 | O(n2n^2n2) | O(n2n^2n2) | 稳定 | O(1) | n小时较好 |
| 2 | 交换排序 | O(n2n^2n2) | O(n2n^2n2) | 不稳定 | O(1) | n小时较好 |
| 3 | 选择排序 | O(n2n^2n2) | O(n2n^2n2) | 不稳定 | O(1) | n小时较好 |
| 4 | 插入排序 | O(n2n^2n2) | O(n2n^2n2) | 稳定 | O(1) | 大部门已排序时较好 |
| 5 | 基数排序 | O(logRBlog_RBlogRB) | O(logRBlog_RBlogRB) | 稳定 | O(nnn) | B是真数(0-9) R是基数(个十百) |
| 6 | 希尔排序 | O(nlog2nnlog_2nnlog2n) | O(nsn^sns) 1<s<2 | 不稳定 | O(1) | s是所选分组 |
| 7 | 快速排序 | O(nlog2nnlog_2nnlog2n) | O(n2n^2n2) | 不稳定 | O(nlog2nnlog_2nnlog2n) | n大时较好 |
| 8 | 归并排序 | O(nlog2nnlog_2nnlog2n) | O(nlog2nnlog_2nnlog2n) | 稳定 | O(1) | n大时较好 |
| 9 | 堆排序 | O(nlog2nnlog_2nnlog2n) | O(nlog2nnlog_2nnlog2n) | 不稳定 | O(1) | n大时较好 |
本文详细介绍了各种排序算法的时间复杂度,从O(1)到O(2^n),并对比了它们在最佳和最差情况下的性能。冒泡排序、选择排序、插入排序等传统算法与快速排序、归并排序、堆排序等高效算法的特点和适用场景被逐一剖析,揭示了算法效率的重要性。此外,还特别提到了基数排序和希尔排序的独特之处。
765

被折叠的 条评论
为什么被折叠?



