Algorithm 在n+;中查找大小为2^k+;1的数组中的第三大元素;2k-3比较
“在n+2k-3比较中查找大小为(2^k+1)的数组中的第三大元素。” 这是我在算法课程期末考试中遇到的一个问题,我没有得到所有的分数。经过彻底的网络搜索,我仍然不确定正确的答案是什么 我意识到这是同一个问题的一个扩展版本,具有第二大问题,但要求的严格比较界限使问题变得棘手。 我还找到了一个数学解释来找到第K个元素,但是它太复杂了,我无法理解 表示数组大小为n=2^k+1 在考试中,我的答案是这样的: 我们将使用锦标赛树。首先,我们省略了任意元素。Algorithm 在n+;中查找大小为2^k+;1的数组中的第三大元素;2k-3比较,algorithm,sorting,comparison,tournament,Algorithm,Sorting,Comparison,Tournament,“在n+2k-3比较中查找大小为(2^k+1)的数组中的第三大元素。” 这是我在算法课程期末考试中遇到的一个问题,我没有得到所有的分数。经过彻底的网络搜索,我仍然不确定正确的答案是什么 我意识到这是同一个问题的一个扩展版本,具有第二大问题,但要求的严格比较界限使问题变得棘手。 我还找到了一个数学解释来找到第K个元素,但是它太复杂了,我无法理解 表示数组大小为n=2^k+1 在考试中,我的答案是这样的: 我们将使用锦标赛树。首先,我们省略了任意元素。 然后构建包含2^k个元素的树。因此,树中有K个
然后构建包含2^k个元素的树。因此,树中有K个级别(log(2^K)) 找到赢家需要我们进行n-2次比较 在输给胜利者的人中找出最大的因素。(K-1公司) 在决赛中输给失败者的人中找出最大的因素。(K-2公司) 我们将比较这些和我们在开始时遗漏的那个。(2个公司) 3个阵列中最大的一个是阵列中的第三个 总体比较:n-2+k-1+k-2+2=n+2k-3 我25分得了10分 我犯了两个错误。最重要的一点是,如果所需元素位于优胜者的子树中,我的答案将是错误的。此外,正确答案应该是我最后比较的3个答案中的第二大 我发现的另一个算法如下:
-构建锦标赛树并找到赢家(n-2)
-通过比较所有输家和赢家,找出第二大赢家。(也通过锦标赛树)(k-1)
-答案在最大的输家到第二大输家之间,输家到决赛中第一棵树上输家之间。(对数(k+1)+k-1-1) -此解决方案假定我们遗漏的元素不是数组中最大的元素。如果是的话,我不知道它是如何运作的。 另外,我可能没有正确理解比较的数量 如果有更好的解释算法,我会很高兴找到。 我也很想知道,对于第1大类,是否还有更广义的一个(K被采用了…)。 提前感谢,, 伊泰
我将把正确性证明留作练习。算法问题在这里完全有效;这就是“算法”标签的作用。好的,再次感谢。如果数组大小为2^k+1,您知道第L个最大元素是否也有算法吗?@ItayR您可以重复步骤2数次。当L变大时,这是次优的。