c++ - 如何在 C++ 中搜索一个非常大的数组以获取特定值?

标签 c++ algorithm search

面试官问我这个问题。如何在大型数组(数千或数百万个值)中搜索特定值。

我建议对项目进行排序且数组大小较小的情况进行二进制搜索。如果您想要大数组中的最大值(值在 1 遍后位于最右边),我还建议对冒泡排序算法进行 1 次迭代。

但我不确定哪些算法可以在数组索引的固有随机分类中提取值。

最佳答案

  1. 线性搜索。这将花费 O(n)。如果数组大小在几千和几百万之间应该就足够了。

  2. 如果您更频繁地进行搜索操作。您可能希望将数组转换为哈希表。最初构建哈希表需要 O(n),然后每次搜索操作都需要 O(1)。解决方案 1 将为您执行的每个搜索操作花费 O(n)

  3. 如果数组非常大,您可以利用多个线程同时搜索数组。将数组分成多个部分,每个线程在其部分中搜索值。

关于c++ - 如何在 C++ 中搜索一个非常大的数组以获取特定值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46391683/

相关文章:

C++:将自动分配的对象添加到 std::vector

algorithm - 与其他几个大文件相比,计算文件唯一性(以百分比表示)的最有效方法

algorithm - 该算法的复杂度公式

go - 在 Go 中将 Gonum 用于图形算法

javascript - 当用户单击键盘上的 Enter 时触发按钮单击

java - 如何在 Java 中搜索坐标数组?

c++ - 欧拉角到四元数然后四元数到欧拉角

c++ - 是否有 API 调用来为 Linux 禁用网络?

c++ - (很长的字符串)对 int cpp 取模

algorithm - 什么是对这些特征进行分组的良好数据结构?什么算法可以用于插入和检索?