【发布时间】:2020-03-20 13:34:53
【问题描述】:
我有一个未排序的数组 A,其中包含 0 到 100 范围内的值。我有多个格式为 QUERY(起始数组索引、结束数组索引、startValue、endValue)的查询。我想返回其值位于 startValue 和 endValue 内的索引数组。天真的方法是为每个查询花费 O(n) 时间,我需要有效的算法。此外,查询最初是未知的。
【问题讨论】:
-
为什么要给出标签database和sqlite?你在用吗?
-
普通数组 A 无能为力,除非您愿意预处理
A并将一些额外信息存储在其他数据结构中 -
最坏的情况确实是 O(n)。但预期的复杂度是 O(range),其中
range是平均范围(即endIndex - startIndex + 1)。您是否允许预处理您的数组并创建一个单独的数据结构用于查询?但请注意,无论您做什么,最坏的情况仍然是 O(n):有人可能会提出一个类似 (0, n, 0, 100) 的查询,这会让您检查并返回每个元素。
标签: arrays database sqlite sorting data-structures