我正在审核我的期中考试,这个具体问题给我带来了一些问题。
这是执行二进制搜索的以下数组:
我要搜索的值是150。
首先,我取第一个元素为0,最后一个元素为15。
(开始+结束)/ 2,
(0 + 15)/ 2 = 7
数组7的值为90.
90< 150,所以该值包含在数组的右侧。
阵列现在看起来像这样:
继续使用相同的逻辑
(开始+结束)/ 2
(8 + 15)/ 2 = 11.
然而,据教授说,我应该在这里的价值12。我不确定我做错了什么。任何帮助将不胜感激。
答案 0 :(得分:0)
甚至在计算机发明之前就已经编写了算法。 计算机只是一种工具或设备,它以高效的方式实现算法,这就是它快速的原因。
您在此处执行的二进制搜索与计算机相关,因为数组从0开始索引(计算通常从计算机中的0开始计算),这就是为什么您从计算机获得11这是正确的。
但是对于人类计数从1开始,所以根据教授的结果是12。 在编写算法的同时,我们根据人类的感知编写算法,然后我们将其扭曲一点,以便在我们的机器中实现。