【发布时间】:2016-05-31 19:54:55
【问题描述】:
以下 SO url 为 Big O 表示法提供了一些很好的真实示例:
What does O(log n) mean exactly?
我对以下为二分搜索提供的示例特别感兴趣:
"O(log n): 给定一个人的名字,通过在你还没有搜索到的书的一半左右随机选择一个点来找到电话号码,然后检查这个人的名字是否在那个位置点。然后在书中人名所在的部分重复这个过程。(这是对人名的二分搜索。)"
关于这个我有一些不清楚的地方:
教科书式的二分搜索是否从在数组的确切中间点开始搜索?如果数组中有偶数个项目,教科书的二分搜索算法应该随机选择较低或较高的项目吗?
教科书的二分搜索是对特定数据点进行中途搜索,还是搜索数据点的集群组以提高效率?或者二分搜索模式是否支持这些方法中的任何一种?
二分查找能否应用于已排序或未排序的数组?还是总是建议在执行二进制搜索之前以编程方式对数组进行排序?
【问题讨论】:
标签: algorithm big-o binary-search