algorithm - 找到任意数字数组的最大值和第 k 个最大值的最小比较次数
问题描述
这个问题是以下已知问题的扩展:
查找最小比较次数以找到 N 个任意数组的最大值和最小值。
事实证明,我们可以使用锦标赛树构造或使用对构造来回答它(我从这里得到了这些方法)。
我想知道以下问题的答案是什么:
找到最小比较次数,以找到 N 个任意数组的最大值和第 k 个最大值。
我不知道如何解决这个问题。我的想法是在锦标赛方法的每个级别上观察失败者/获胜者数组的一些属性,例如:如果数组是 8 6 4 3 2 1 5 7,那么每个级别的获胜者和失败者数组就像
获胜者_1 = [8, 4, 2, 7]
失败者_1 = [6, 3, 1, 5]
获胜者_获胜者_2 = [8, 7]
失败者_获胜者_2 = [4, 2]
获胜者_失败者_2 = [6, 5]
失败者_失败者_2 = [3, 1]
获胜者_获胜者_获胜者_3 = [8]
获胜者_失败者_获胜者_3 = [4]
获胜者_获胜者_失败者_3 = [6]
获胜者_失败者_失败者_3 = [3]
失败者_获胜者_获胜者_3 = [7]
失败者_失败者_获胜者_3 = [2]
失败者_获胜者_失败者_3 = [5]
失败者_失败者_失败者_3 = 1
解决方案
推荐阅读
- python - 如何更新我的矩形的位置坐标?
- java - Spring Boot:仅在删除最后一篇文章时才删除博客文章共享标签
- flutter - Flutter——Image FrameBuilder 的问题
- ruby-on-rails - 在 Rails 中创建关联时最好使用什么关系?
- python - 我可以检查是否将给定参数添加(或“已知”)到 argparse?
- python - 异常测试 - 带 t 或不带 t 的线性回归?理解设置的问题
- kotlin - 我的 libgdx box2d 纹理代码有什么问题
- android - 当我将构建上线时,应用程序被机器人淹没
- ios - 如何在 Swift 中将 XCode lldb 中的对象作为第一状态 JSON 读取?
- android - 将android连接到asp.net core web api时出错