Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Search 在二进制搜索中,我们将mid_Search_Binary - Fatal编程技术网

Search 在二进制搜索中,我们将mid

Search 在二进制搜索中,我们将mid,search,binary,Search,Binary,当low=mid时,我们改变m=l+(h-l+1)/2。我的疑问是为什么我们取low=mid。如果你的意思是当l+h是奇数时,它会自动四舍五入,你不需要任何显式代码来四舍五入mid。这里是二进制搜索算法 给定一个由n个元素组成的数组,其值或记录为A0。。。一−1,排序为A0≤ ... ≤ 一−1和目标值T,下面的子例程使用二进制搜索来查找[7]中T的索引 Set L to 0 and R to n − 1. If L > R, the search terminates as unsucc

当low=mid时,我们改变m=l+(h-l+1)/2。我的疑问是为什么我们取low=mid。

如果你的意思是当
l+h
是奇数时,它会自动四舍五入,你不需要任何显式代码来四舍五入
mid
。这里是二进制搜索算法

给定一个由n个元素组成的数组,其值或记录为A0。。。一−1,排序为A0≤ ... ≤ 一−1和目标值T,下面的子例程使用二进制搜索来查找[7]中T的索引

Set L to 0 and R to n − 1.
If L > R, the search terminates as unsuccessful.
Set m (the position of the middle element) to the floor (the largest previous integer) of (L + R) / 2.
If Am < T, set L to m + 1 and go to step 2.
If Am > T, set R to m – 1 and go to step 2.
Now Am = T, the search is done; return m.
将L设置为0,将R设置为n− 1.
如果L>R,则搜索将终止为不成功。
将m(中间元素的位置)设置为(L+R)的楼层(上一个最大整数) / 2.
如果AmT,则将R设置为m–1并转至步骤2。
现在Am=T,搜索完成;返回m。

你永远不会找到像
m=l+(h-l+1)/2

这样的东西,如果你的意思是当
l+h
是奇数时,它会自动舍入,你不需要任何显式代码来舍入
mid

给定一个由n个元素组成的数组,其值或记录为A0。。。一−1,排序为A0≤ ... ≤ 一−1和目标值T,下面的子例程使用二进制搜索来查找[7]中T的索引

Set L to 0 and R to n − 1.
If L > R, the search terminates as unsuccessful.
Set m (the position of the middle element) to the floor (the largest previous integer) of (L + R) / 2.
If Am < T, set L to m + 1 and go to step 2.
If Am > T, set R to m – 1 and go to step 2.
Now Am = T, the search is done; return m.
将L设置为0,将R设置为n− 1.
如果L>R,则搜索将终止为不成功。
将m(中间元素的位置)设置为(L+R)的楼层(上一个最大整数) / 2.
如果AmT,则将R设置为m–1并转至步骤2。
现在Am=T,搜索完成;返回m。

你永远也找不到类似于
m=l+(h-l+1)/2

对mid进行舍入是什么意思?你必须得到一个整数,因为它代表数组中的索引,你可以舍入看到mid的值不完整,可能不正确。发布完整(伪)代码来说明您的观点。我的疑问是,为什么我们将low等同于mid?您对mid的取整是什么意思?您必须获得一个整数,因为它表示数组中的索引,您可以取整查看mid的值,很明显,MURASING不完整,可能不正确。发布完整的(伪)代码来说明您的观点。我的疑问是为什么我们将低到中
(L+R)/2
会有溢出的风险。您没有得到它,我将粘贴代码,然后它将是清晰的
(L+R)/2
会有溢出的风险。您没有得到它,我将粘贴代码,然后它将是清晰的