【发布时间】:2017-09-08 13:05:41
【问题描述】:
假设它是二进制搜索算法并且数组中的元素总数为 1000,则必须查看(二进制搜索)多少元素才能在元素 499 处找到整数 5215 和在元素 686 处找到整数 7282?
我将如何解决我的问题?我知道这个算法首先通过将数组元素的总数除以一半来检查搜索值(或我想要定位的元素)是否在中间;但是,如果它不存在,它会检查数组的上半部分,但如果它不存在,它会再次返回。另外,这是我的证明,证明我在尝试询问嵌入在 HTML 代码中的问题之前确实研究了这个问题。
不过我确实有一个理论(请参阅下面的理论:)
1000/2 = 第一个元素是 500 个元素
500/2,下一个元素是250元素。
【问题讨论】:
-
@我知道在 1000 个元素的数组中有 0-999 个索引,所以这是首先了解的开始吗?
-
二分查找假定数组已排序。在您的示例中,数组不能按升序排序,因为 499 处的项目大于 686 处的项目。数组是否按降序排序?如果数组没有排序,那么二分查找将不起作用。
-
@Jim Mischel 如果 499 索引是 5215 而 686 索引是 7282 怎么样?对此感到抱歉。
-
使用铅笔和纸,完成en.wikipedia.org/wiki/Binary_search_algorithm#Procedure 中描述的步骤。写下每一步的工作。您将在大约 5 分钟内找到答案。
-
@Jim Mischel 在我看来这有点道理,但是是否有可能绘制一个清晰的(彩色)视觉表示来看看这在理论上是如何工作的。它会如何看待 1000 的下半部分和上半部分?
标签: data-structures array-algorithms