Given an array A[1: n] of n elements drawn from an ordered set, the sorted range selection problem is to build a data structure that can be used to answer the following type of queries efficiently: Given a pair of indices i, j $ (1\le i\le j \le n)$, and a positive integer k, report the k smallest elements from the sub-array A[i: j] in order. Brodal et al. (Brodal, G.S., Fagerberg, R., Greve, M., and L{\'o}pez-Ortiz, A., Online sorted range reporting. Algorithms and Computation (2009) pp. 173--182) introduced the problem and gave an optimal solution. After O(n log n) time for preprocessing, the query time is O(k). The space used is O(n). In this paper, we propose the only other possible optimal trade-off for the problem. We present a linear space solution to the problem that takes O(k log k) time to answer a range selection query. The preprocessing time is O(n). Moreover, the proposed algorithm reports the output elements one by one in non-decreasing order. Our solution is simple and practical. We also describe an extremely simple method for range minima queries (most of whose parts are known) which takes al most (but not exactly) linear time. We believe that this method may be, in practice, faster and easier to implement in most cases.
翻译:给定一个从有序集中抽取的含n个元素的数组A[1: n],有序区间选择问题旨在构建一种数据结构,使其能高效回答以下类型的查询:给定一对下标i, j $ (1\le i\le j \le n)$ 以及一个正整数k,按顺序输出子数组A[i: j]中最小的k个元素。Brodal等人(Brodal, G.S., Fagerberg, R., Greve, M., 和 López-Ortiz, A., Online sorted range reporting. Algorithms and Computation (2009) 第173–182页)提出了该问题并给出了一种最优解决方案。在O(n log n)时间的预处理后,查询时间为O(k),空间复杂度为O(n)。本文提出了该问题唯一另一种可能的最优权衡方案。我们给出了一种线性空间的解决方案,回答区间选择查询需要O(k log k)时间,预处理时间为O(n)。此外,所提出的算法按非递减顺序逐个输出结果元素。我们的解决方案简单且实用。我们还描述了一种用于区间最小值查询(其中大部分部分已知)的极其简单的方法,该方法在大多数情况下所需时间接近(但不等于)线性。我们相信,在实践中,这种方法可能更快且更易于实现。