arrays - 使用二分查找在 n 个元素的数组中查找 k 个不同的键

标签 arrays algorithm search time-complexity

假设我有一个由 n 个元素组成的排序数组。我想使用二分搜索在该数组中找到 2 个不同的键 k1 和 k2。

一个基本的解决方案是分别对它们应用二分搜索,就像对 2 个键的两次调用一样,这会将时间复杂度保持在 2(logn)

我们可以针对不同的 k 个键 k < n 使用任何其他方法来解决这个问题吗?

最佳答案

您完成的每次搜索都可以用于分割输入,以提高效率。例如,假设对应于 k1 的元素位于索引 i1 处。如果 k2 > k1,您可以将第二次搜索限制为 i1..n,否则将其限制为 0..i1。

最好的情况是您的搜索键也已排序,因此每个新搜索都可以从找到最后一个搜索的位置开始。

关于arrays - 使用二分查找在 n 个元素的数组中查找 k 个不同的键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20559254/

相关文章:

c# - 有没有更快的方法来搜索大文件而不将其加载到内存中?

elasticsearch - 如何根据elasticsearch中索引字段值(数据)的优先级获取搜索结果

python - Numpy 设置数组内存

javascript - 通过字符串访问 JavaScript 中的事件数据以指定要捕获的输入表单

c++ - 如何动态构建完整的二叉树?

python - 有没有一种有效的方法可以将一个字符串拆分为两个字符串?

algorithm - 实现将按距离排序的地点返回给当前用户的服务操作的最佳方式是什么?

c# GetDirectories 返回意外目录(已给出具体示例)

c++ - 从数组中读取值有困难

java - 如何将 child 添加到 n 数组树中的特定节点?