所以我正在参加一场考试,其中一个重要部分是快速排序算法。众所周知,这个算法的最佳情况和实际上的平均情况是:
至于最坏情况,我知道如何解释它:当选择的枢轴是数组中最小或最大的值时,我们会有
现在是最好/平均情况。我读过Cormen的书,由于那本书,我理解了很多东西,但是对于快速排序算法,他专注于数学公式来解释
我知道互联网上有许多涵盖快速排序的材料,但它们只涵盖实现,或者只是告诉我复杂度,而不解释它。
O(nlogn)
。最坏情况是O(n^2)
。至于最坏情况,我知道如何解释它:当选择的枢轴是数组中最小或最大的值时,我们会有
n
个快速排序调用,每个调用可能需要n
时间(我的意思是划分操作)。我是对的吗?现在是最好/平均情况。我读过Cormen的书,由于那本书,我理解了很多东西,但是对于快速排序算法,他专注于数学公式来解释
O(nlogn)
复杂度。我只想知道为什么它是O(nlogn)
,而不涉及某些数学证明。目前我只看到维基百科的解释,即如果我们选择将我们的数组分成n/2, n/2+1
两部分,那么我们将有一个深度为logn
的调用树,但我不知道这是否正确,即使是这样,为什么是logn
。我知道互联网上有许多涵盖快速排序的材料,但它们只涵盖实现,或者只是告诉我复杂度,而不解释它。
k
,使得2^k=n
。 - minecraftplayer1234