我们知道,在快速排序中,最坏的情况是O(n ^ 2) 我可以解决以下数组:
1 2 3 4 5 6 7 8 9 10
当我将n的值放在最坏情况的答案方程中时是100 但在空运行中,它可以解决51个步骤。
的原因有很大的不同答案 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。我希望这会有所帮助!