Menu
CoddyTech

时间和空间复杂度

Coddy 快速排序:DSA 系列 课程的第 7 课,共 9 课。

时间复杂度:

  • 平均情况:O(n log n)
    • 平衡的基准值每次都会将数组大致分成两半,因此会产生约 log n 层,每层的分区工作量为 O(n)。
  • 最坏情况:O(n2)
    • 如果基准值始终是最小或最大的元素(例如,数组已经排好序,且选择最后一个元素作为基准值),那么每次都会有一侧为空,递归深度会达到 n 层。

空间复杂度:

  • 这里实现的版本需要 O(n) 空间,因为每一步都会创建新的较小元素列表和较大元素列表。经典的原地快速排序可以将额外空间降至 O(log n)。

总结:

  • 快速排序的平均速度非常快,在实际应用中是常用的排序算法。
  • 选择不佳的基准值可能会使它的时间复杂度退化到 O(n2);采用良好的基准值策略(例如随机选择或选择中位数元素)可以避免这种情况。

亲手试试

这节课没有代码挑战。

quiz icon自我测试

这节课包含一个小测验。开始学习即可作答,并记录你的进度。

快速排序:DSA 系列中的所有课

自己练习: C 在线编译器