algorithm - 搜索排序数组的最快搜索算法

标签 algorithm search

我有一个只有值 0 和 1 的数组。它们分别存储在数组中。例如,数组可能有前 40% 为 0,其余 60% 为 1。我想找出 0 和 1 之间的分割点。我想到的一种算法是二分查找。由于性能对我来说很重要,所以不确定二分查找是否能给我最好的性能。分割点是随机分布的。该数组以 0 和 1 拆分的格式给出。

最佳答案

当您数组时,保持计数的看似聪明的答案并不成立。

计数是O(n),线性搜索也是。因此,计数不是最优的!

二分查找是您的 friend ,可以在 O(lg n) 时间内完成工作,您可能知道这是 way better .

当然,如果您无论如何都必须处理数组(从文件读取、用户输入等),请利用这段时间来计算 10 的数量 并完成它(您甚至不必存储任何内容,只需保留计数即可)。

要说明这一点,如果您正在编写一个库,它有一个名为 getFirstOneIndex(sortZeroesOnesArr: Array[Integer]): Integer 的函数,它接受一个由 1 和 0 组成的排序数组并返回第一个1的位置,不计,二分查找。

关于algorithm - 搜索排序数组的最快搜索算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33680654/

相关文章:

c++ - 进一步优化DP解决方案的提示

python - 在线性时间内从列表中删除所有出现的值

java - 数独算法生成 0 个值

java - 从以下树状数据结构中获取所有可能的组合

java - 使用 for 循环和 if 语句搜索帐户

search - 调solr短语查询搜索

algorithm - 如何检查一个点在一个平面(或多个平面)的一侧?

PHP 搜索 MySQL 数据库 fatal error

algorithm - 最小化 A* 算法的 bool 函数启发式

python - 查找最不常出现的模糊字符串