java - 二分查找的比较次数

标签 java algorithm binary-search

使用二分查找定位数组中所有 n 个排序的不同整数所需的比较总数是多少?我认为数字是 n log2 n(2 是基数),但我不确定。你怎么认为?

最佳答案

如果你想要一个确切的答案,那么它显然不是 N log(N) 或 N log2(N)。对于大多数整数N,logN和log2都不是有理数,但比较次数必须是整数值。

此外,确切的答案将取决于二分搜索算法的实现细节。例如,如果“比较”是返回真和假的简单关系,则需要比“比较”返回负数、零或正数时更多的比较。 (在后一种情况下,您可以在算法提前击中关键时短路。)

关于java - 二分查找的比较次数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2590479/

相关文章:

java - 如何在 Spring Boot 中为只有外键的表映射/创建实体类

java - 二分查找 - 错误

c# - 如何解析树的一行字符串表示?

sql - 在文本中进行单词搜索以查找包含最匹配变体的文本

c# - BinarySearch如何在两个邻居之间的数组中找到值?

c++ - C++ binary_search函数排序数组出现问题(通俗名称搜索)

java - RichFaces 列 : Saving value of attribute on a row for comparisons

java - 如何让一维数组接受多个字符串值?

java - 从 URL Google map 获取经纬度

algorithm - 最快路径算法