我知道算法的最坏情况 - 即元素已经排序或所有元素相同但想知道算法从nlgn的复杂度移动到n2的点。
答案 0 :(得分:0)
这取决于我们如何选择 pivot 。
一个视图说明所有元素已经排序。嗯,这不是100%正确。在这种情况下,如果我们选择第一个元素作为支点,则复杂度将变为 N ^ 2 。
因为我们有,
T(N) = T(N-1) + cN (N >1)
,如果你擅长基础数学,那么:
T(N) = O(N^2)
如上所述,它取决于我们如何选择支点。虽然在一些教科书中,它主要选择第一个枢轴,但并未重新开始。
一种流行的方法是:三分区中位数。它选择[左],[右]和[(左+右)/ 2]的中值。
答案 1 :(得分:0)
当所选枢轴不分割阵列时,会发生最快的快速排序时间。例如,如果我们每次都选择第一个元素作为数据透镜并且数组已经排序,则数组根本不会被分割。因此复杂度为O(n ^ 2)。
为了避免这种情况,我们随机化了pivot的索引。假设枢轴将阵列分成两个大小相等的部分,我们的复杂度为O(n log n)。
有关精确分析,请参阅https://en.wikipedia.org/wiki/Quicksort
中的形式分析部分答案 2 :(得分:0)
表现最差,
为O(n ^ 2)
以下情况
注意 - 如果选择枢轴作为中位数,已经排序的情况可能不是最坏的情况。