如何找到快速排序的上下边界?

时间:2015-09-30 04:33:04

标签: algorithm data-structures

我得到了快速排序的平均案例复杂度。现在如何找到快速排序的上限和下限?

1 个答案:

答案 0 :(得分:0)

快速排序的时间复杂度为O(N log(N)),最差情况为O(N ^ 2)。这是因为它必须遍历数组的所有数字并将它们平分。分成两个子阵列,它们比选定的枢轴更低和更高。这些子阵列中的每一个都必须继续通过相同的过程。这种分而治之的行为一直持续到只有大小为2的数组才能正确排序。要计算它,需要N log(N)。这可以通过二叉树轻松看到,其中叶子(底行)被排序。然后你只是将它们连接起来。

      8
  4       4
2   2   2   2

快速排序会在您有排序数组时遇到问题。像插入排序这样的东西在这种情况下会有O(N)时间算法。处理部分排序的数组并且您需要时间紧缩(即如果您正在处理数百万个数据),那么您可能想要创建一个适合您口味的自己设计的算法。

参考:https://en.wikipedia.org/wiki/Quicksort