快速排序最坏情况的空运行

时间:2019-12-15 10:17:00

标签: arrays data-structures quicksort

我们知道,在快速排序中,最坏的情况是O(n ^ 2) 我可以解决以下数组:

1 2 3 4 5 6 7 8 9 10

当我将n的值放在最坏情况的答案方程中时是100 但在空运行中,它可以解决51个步骤。

的原因有很大的不同

2 个答案:

答案 0 :(得分:2)

O(n ^ 2)意味着复杂度随n的平方而增加,而不是恰好是n^2

您需要检查ans增长时成本(n)增长的情况。尝试将5、10和20项放入最坏情况的数组中,然后您会发现an并没有成比例增长(每次2倍)到n,而是增长得更快。

答案 1 :(得分:0)

在考虑如何将Big O定义为快速排序算法中的最坏情况时,考虑Big O的定义将很有帮助。大O描述函数的渐近行为。当提到一种算法时,运行时间的上限是f(x),即O(f(x))。这意味着您的算法增长速度不会超过f(x)。在您的示例中,快速排序的上限为(n ^ 2),因此,由于n任意大,它的增长速度不能超过n ^ 2。

被n ^ 2限制在上面并不一定意味着最坏的情况恰好需要n ^ 2步。它在上方也受到n ^ 4,n ^ 100,n ^ n的限制。这意味着快速排序永远不会比n ^ 2,n ^ 4,n ^ 100,n ^ n快。

描述大O时要牢记的另一点是考虑n任意变大或趋于无穷大。在此示例中,n为10,但是当在最坏的情况下考虑较大的n的Big O时,步数将增加,但永远不会超过n ^ 2。我希望这会有所帮助!