我正在实现一个算法,使用最左边的枢轴选择执行快速排序达到一定的限制,当数组列表几乎排序时,我将使用插入排序来排序这些元素。
对于最左边的数据透视选择,我知道快速排序的平均情况复杂度是O(nlogn)和最差情况的复杂性,即。当列表几乎排序时,是O(n ^ 2)。另一方面,插入排序在几乎排序的元素列表上非常有效,其复杂度为O(n)。 所以我认为这种混合算法的复杂性应该是O(n)。我是对的吗?
答案 0 :(得分:-2)
对于qsort的表现来说,最重要的是选择一个好的支点。这意味着选择一个尽可能接近您要排序的元素平均值的元素。
qsort中O(n 2 )的最坏情况来自于每次分区通过时每次都选择“坏”支点。这导致分区非常不平衡而不是平衡,例如。 1:n-1元素分配比例。
我没有看到如何在您所描述的内容中添加插入排序可以帮助或缓解此问题。