Algorithm 使用快速排序算法对K排序数组排序的时间复杂度

Algorithm 使用快速排序算法对K排序数组排序的时间复杂度,algorithm,sorting,time-complexity,quicksort,Algorithm,Sorting,Time Complexity,Quicksort,问题: 我必须分析排序(使用快速排序)几乎已排序的整数值列表的时间复杂性 我做了什么? 我读过、和 但是,我没有发现任何明确提到使用快速排序对k排序数组进行排序的时间复杂性的内容 由于快速排序算法的时间复杂度取决于选择枢轴的策略,并且由于数据几乎已排序,因此有可能面临最坏的情况,为了避免最坏的情况,我使用了三个值(第一、中间、最后)的中值作为枢轴 我怎么想? 因为在一般情况下,快速排序算法的时间复杂度为O(n log(n)),并且如前所述,“对于n的任何非平凡值,分治算法将需要许多O(n)个过程

问题:

我必须分析排序(使用快速排序)几乎已排序的整数值列表的时间复杂性

我做了什么?

我读过、和

但是,我没有发现任何明确提到使用快速排序对k排序数组进行排序的时间复杂性的内容

由于快速排序算法的时间复杂度取决于选择枢轴的策略,并且由于数据几乎已排序,因此有可能面临最坏的情况,为了避免最坏的情况,我使用了三个值(第一、中间、最后)的中值作为枢轴

我怎么想?

因为在一般情况下,快速排序算法的时间复杂度为
O(n log(n))
,并且如前所述,“对于n的任何非平凡值,分治算法将需要许多O(n)个过程,即使数组几乎完全排序”

我认为使用快速排序算法对k个排序数组进行排序的时间复杂度是
O(n log(n))
,如果最坏的情况没有发生的话

我的问题:


如果我试图避免最坏的情况选择正确的枢轴,并且如果最坏的情况没有发生,那么使用快速排序算法对k个排序数组进行排序的时间复杂度是
O(n log(n))

当你说快速排序的时间复杂度时,它是
O(n^2)
,因为默认情况下假定最坏的情况。然而,如果您使用另一种策略来选择pivot,例如随机快速排序,那么默认情况下,您的时间复杂度仍然是O(n^2)。但是预期的时间复杂度是O(n log(n)),因为最坏情况的发生是极不可能的。因此,如果你能以某种方式证明最坏的情况是100%保证不会发生,那么你可以说时间复杂度小于
O(n^2)
,否则,默认情况下,不管发生的可能性有多大,都会考虑最坏的情况。

尽管运行时间会慢一个常数,使用保证O(n log(n))时间复杂度。不过,这有点像混合排序,因为插入排序通常用于对5个元素的组进行排序。@rcgldr感谢您提供的宝贵信息“中间值”。