Quicksorting二进制数组

时间:2012-11-17 17:16:34

标签: algorithm sorting quicksort

我想知道有多少比较,在最坏的情况下,Quicksort需要对大小为n的二进制数组进行排序。
我无法找出这个问题的最坏情况。 [0 1 0 1 0 1..]
干杯,
EO

2 个答案:

答案 0 :(得分:1)

不完全快速排序,但如果要对二进制数组进行排序,可以在O(n)中进行。只计算你有多少1和0,然后按你想要的顺序写。

例如,对于以下数组:

[0 1 0 1 0 1 1]

你可以在O(n)中计算你有三个0和四个1。然后你只需先用三个0重写你的数组,然后用四个1重写你的数组。

答案 1 :(得分:0)

在实践中,对包含少量唯一键的数组进行排序很常见。 人们希望算法在唯一键的数量为O(1)时适应O(n)时间。 在您的情况下,只有两个唯一键。

QuickSort平均为O(nlogn),但在最坏情况下为O(n ^ 2),对于您的情况,我已在此数组[ 0 1 1 0 1 0 1 0 0 0 1 0 1 ]上测试了快速排序算法,数组的长度为{{ 1}}元素,算法需要13次迭代对此数组进行排序,即170

这个O(n)算法的伪代码:

n^2