在快速排序中,我们可以以不同的方式选择枢轴值。随机选择一个透视值就是其中之一。它说当我们随机选择枢轴值时,它最小化O(n ^ 2)的机会。任何人都可以解释它是如何发生的?有什么缺点吗?
答案 0 :(得分:3)
如果期望值在所有可能的输入(排列)上取平均值,则随机和非随机选择都会产生一个算法,其预期运行时间为Theta(n * log(n))。
实际上并非所有输入排列都是同等可能的。特别是当pick-first给出Theta(n ^ 2)复杂度时,你经常得到排序或接近排序的数组。最重要的是,如果您的拣选算法是确定性的,攻击者可以制作一个令人讨厌的排列,使您的算法成为二次方,从而实现拒绝服务。
选择随机元素作为枢轴防范这些非随机情况。
答案 1 :(得分:1)
有一个数学证明,带有随机轴的预期运行时间是Theta(n logn)。
wiki page有一个部分。