Quick 中的枢轴元素选择 Select
Pivot element selection in Quick Select
为了快速 select select 在最后一个元素上随机枢轴有什么意义吗?
我仍然可以通过始终 select 将最后一个元素作为枢轴来找到所需的元素。会不会影响运行时间
枢轴的选择对给定数组上快速select的运行时间有很大影响。
在确定性快速select 中,如果您总是选择最后一个元素作为您的主元,想象一下如果您尝试从一个始终排序的列表中 select 会发生什么。你的主元永远是最差的主元,只会从数组中删除一个数字,导致 Θ(n2) 运行time.
在随机快速select中,如果算法总是做出最坏的情况,运行时间仍然是 Θ(n2) 在技术上是可能的每次递归调用的可能选择,但这是极不可能的。 运行时间大概率是O(n),没有"killer"输入
换句话说,具有确定性选择的枢轴的 quickselect 将始终至少有一个 "killer" 输入,迫使它及时 运行 Θ(n2),而具有随机枢轴的 quickselect 没有杀手级输入,并且具有出色的平均时间保证。结果分析完全不同。
希望对您有所帮助!
为了快速 select select 在最后一个元素上随机枢轴有什么意义吗?
我仍然可以通过始终 select 将最后一个元素作为枢轴来找到所需的元素。会不会影响运行时间
枢轴的选择对给定数组上快速select的运行时间有很大影响。
在确定性快速select 中,如果您总是选择最后一个元素作为您的主元,想象一下如果您尝试从一个始终排序的列表中 select 会发生什么。你的主元永远是最差的主元,只会从数组中删除一个数字,导致 Θ(n2) 运行time.
在随机快速select中,如果算法总是做出最坏的情况,运行时间仍然是 Θ(n2) 在技术上是可能的每次递归调用的可能选择,但这是极不可能的。 运行时间大概率是O(n),没有"killer"输入
换句话说,具有确定性选择的枢轴的 quickselect 将始终至少有一个 "killer" 输入,迫使它及时 运行 Θ(n2),而具有随机枢轴的 quickselect 没有杀手级输入,并且具有出色的平均时间保证。结果分析完全不同。
希望对您有所帮助!