【发布时间】:2012-06-07 10:49:42
【问题描述】:
我在理解一些更高级的排序、选择、搜索等算法方面取得了一些很好的突破。
这是我坚持的场景。
对于一个值数组,您想在其中找到第 k 个最小的元素,如果它未排序,您可以使用 quickselect,如果它已排序,则使用二分查找。
如果我理解正确,通过枢轴/分区系统,快速选择将通过选择枢轴来搜索未排序的数据集,通过将每个元素与枢轴进行比较来创建低点和高点组,然后递归地将列表分解为子列表通过不断变化的支点。
这听起来与二分搜索的工作方式非常相似,那么为什么快速选择适用于未排序的值而二分搜索不适用,并且不是快速选择算法中的所有比较(计算出低点和高点) 花费很多……成本?
【问题讨论】:
-
快速选择是 O(n),而 Binarysearch 是 O(logn)。但是第一个可以在任何列表上工作,而后者需要一个排序的列表。关于为什么快速选择可以处理未排序的列表,我相信您在第 4 段中自己解释过。那么,你的问题究竟是什么?
标签: algorithm select binary-search