python - 在二分查找中,计算机如何选择中点以及何时只剩下两个元素

标签 python algorithm binary-search

我已经阅读了一些关于这个问题的 stackoverflow 问题和其他博客。

他们中的大多数解释使用以下方式选择中点:

1. low + (high - low)/2
2. (low + high)/2, round down to integer.

来自 Deciding mid in binary searchhttps://www.khanacademy.org/computing/computer-science/algorithms/binary-search/a/binary-search

它们都不是很有意义。

假设我有一个表单中的列表

lst = [2, 5, 8, 12, 16, 23, 38, 56, 72, 91]

使用 1.midpoint = 46.5 并使用 2.midpoint = 50.5,四舍五入为 50。

两个中点都不在我的列表中。

而且当只有2个元素时,它会选择哪一个作为中点?

最佳答案

lowhigh 变量不引用列表或数组的元素。它们引用列表或数组的索引。因此,中间元素不会由以下方式给出:low + (high - low)/2(low + high)/2 (向下舍入为整数),而是通过 lst[low + (high - low)/2]lst[(low + high)/2]

关于python - 在二分查找中,计算机如何选择中点以及何时只剩下两个元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59691836/

相关文章:

python - 如何使用 Pandas 保留具有重叠时间的系列中的最新数据

python - Django - 从每个组的最新日期检索对象 - PersonPhoto

c++ - 图通常是如何定义的?

c# - A* 表示认识到实现目标是不可能的

python - matplotlib:savefig 和 show 之间不一致

python - 关于 robots.txt 的问题,禁止不带冒号

algorithm - Dijkstra算法是否需要检查所有顶点?

java - 二进制搜索字符串数组

c++ - 二进制搜索以在 STL C++ 多重集中查找小于或等于的值

c++ - 二进制搜索查找排序数组中比给定值最小和最大的元素?