在最后一个元素上选择随机数位以进行快速选择有什么意义吗?
我仍然可以通过始终选择最后一个元素作为枢轴来找到所需的元素。它会影响运行时吗。
答案 0 :(得分:3)
pivot的选择对给定数组上quickselect的运行时间有很大的影响。
在确定性快速选择中,如果您始终选择最后一个元素作为您的支点,请想象如果您尝试从总是排序的列表中选择,会发生什么。您的枢轴始终是最糟糕的枢轴,并且只会从阵列中消除一个数字,从而导致Θ(n 2 )运行时。
在随机快速选择中,如果算法总是在每次递归调用上做出最坏的选择,那么在技术上可能运行时将是Θ(n 2 ),但这是非常不可能的。运行时很可能是O(n),并且没有“杀手”输入。
换句话说,使用确定性选择的枢轴快速选择将始终至少有一个“杀手”输入强制它在时间Θ(n 2 )中运行,同时使用随机枢轴快速选择没有杀手输入,并有很好的平均时间保证。因此,分析完全不同。
希望这有帮助!