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