您将获得两个输入:整数k和包含n个整数的数组A. 给出一个算法,最多可以找到A的k个最小元素中的任何一个 n - k比较。 (换句话说,你的算法必须返回k中的一个 A的最小元素,但哪一个无关紧要。)解释为什么你的 算法保证找到正确的答案以及为什么它满足界限 在运行时间。 (提示:有一种非常简单的方法可以解决这个问题)。
答案 0 :(得分:0)
对于k = 1,我可以找到n-1个比较中的最小元素 - 只需沿着数组继续跟踪到目前为止看到的最小元素。
对于k = 2,使用n-2比较找到数组中第一个n-1个元素的最小元素。这是整个数组中的最小元素,除非你错过的元素较小,在这种情况下它是第二小的,这是可以的。
对于一般k,找到第一个n-k + 1中的最小元素,忽略数组中的最后一个k-1元素。结果是最小的元素,除非其余元素的k-1更小,在这种情况下它仍然是k个最小的元素之一,你没关系。