Algorithm 如何使用多个重复元素加速Quickselect?
我目前正在实现以获得列表中最好的n个元素。 在这种情况下,“最佳”元素是最大的 我的问题如下:Algorithm 如何使用多个重复元素加速Quickselect?,algorithm,search,partitioning,Algorithm,Search,Partitioning,我目前正在实现以获得列表中最好的n个元素。 在这种情况下,“最佳”元素是最大的 我的问题如下: 我发现,如果有许多重复的元素,那么性能会很差,因为最后没有排序的值都是相同的,在这一点上,无论轴索引如何,左边框在每次迭代中只会增加1 在这种情况下,有没有办法修复此问题并中止?Quickselect基于快速排序算法 根据,当所有元素相等时,快速排序可能会达到其最坏情况下的时间复杂度 该链接还提供了如何加速快速排序的解决方案[1]。由于Quickselect基于快速排序,类似的解决方案可能会对您有所帮
我发现,如果有许多重复的元素,那么性能会很差,因为最后没有排序的值都是相同的,在这一点上,无论轴索引如何,左边框在每次迭代中只会增加1
在这种情况下,有没有办法修复此问题并中止?Quickselect基于快速排序算法 根据,当所有元素相等时,快速排序可能会达到其最坏情况下的时间复杂度 该链接还提供了如何加速快速排序的解决方案[1]。由于Quickselect基于快速排序,类似的解决方案可能会对您有所帮助
- [1] 该解决方案提到了分区的思想。CS.SE有一些问题,包括代码,并比较了两种用于快速排序的分区算法,即Lomuto建议的方法和Hoare建议的方法:。
有标记的答案还指出,霍尔的变体更有效,而洛穆托的变体更容易正确实现。因此,根据您的情况,后者可能就足够了 - [2]