与未排序数组的任何其他中位数选择问题一样,但有额外的限制。我们需要使用提供的子例程/辅助函数Quart(A,p,r),该函数在线性时间内查找给定子数组中第1/4的有序项。我们如何使用此辅助函数来找到数组的中位数?
进一步限制: 1.您的解决方案必须就地执行(没有新的 可以创建数组)。特别是,一种替代解决方案是 将数组扩展为大小m,以便A [n + 1,...,m] =中的所有条目 1并且m> 2n。之后,您将能够解决中位数 只需调用四分位问题即可解决原始数组中的问题 在扩展数组中。在进一步的限制下,这是不可能的。 2.在运行算法时,您可以临时更改数组中的元素,例如SWAP更改元素。但是,在算法结束后,数组中的所有元素必须与开始时的元素相同(但就像课堂上讲授的随机选择算法一样,它们的顺序可能与原始顺序不同)。
由于不允许创建新数组,因此,仅允许修改少量(恒定)项。
答案 0 :(得分:0)
您可能需要一些其他规则来处理特殊情况,例如如果有多个值等于四分位数。