gpt4 book ai didi

c++ - 无法理解快速选择算法

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:46:09 29 4
gpt4 key购买 nike

我在理解快速选择算法时遇到问题。我知道它是基于快速排序算法(我很熟悉)并且它给你所需的结果可能留下数组的一部分未排序。现在这是我遇到困难的地方。问题是从数组中找到第二小的元素:

int a[4] = {1,3,5,2} ;

现在假设我们根据 this 随机选择 pivot发布我们有以下条件:

  • k == pivot .那么你已经找到了第 k 个最小的。这是因为分区的工作方式。恰好有 k - 1 个元素小于第 k 个元素。

  • k < pivot .那么第k小的在pivot的左边。

  • k > pivot .然后第 k 个最小的在 pivot 的右侧。要找到它,您实际上必须在右侧找到 k-pivot 最小数字。

如果有人能解释一下如何k==pivot,我将不胜感激。意味着我们找到了第 k 个(在我的例子中是第二小的元素)。另外如果它是k < pivot我们是否对枢轴的左侧重复该过程?

最佳答案

如果 k = pivot,你将在 pivot 的左侧有 k-1 个项目。由于分区,这些中的每一个都小于枢轴项。此外,由于分区,右边的每个项目都大于主项。因此,枢轴项必须是第 k 个最大的。有道理吗?

关于c++ - 无法理解快速选择算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22433984/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com