给定N个数组的数组$数组和一个键$ key,用简单的英语编写二进制搜索算法.如果$ array包含$ key,则返回$ key的索引; 否则,返回-1.
有人能告诉我怎么做吗?
似乎我不应该在这里给你代码,但也许这个描述可以帮助吗?
对列表进行排序.
让 i = length / 2
将索引i中的术语与您的键进行比较.
一个.如果它们相等,则返回索引.
湾 如果key大于此术语,请在列表的上半部分重复3(递归)i = (i + length) / 2 (或(i + top) / 2取决于您的实施方式)
C.如果键小于该项,则在下半部分i = i/2或下半部分重复3(i + bottom)/2
如果/当new i与旧的相同时停止递归i.这意味着你已经用尽了搜索.返回-1
请注意逐个错误,这可能会导致您错误地排除某些术语,或导致无限递归,但这是一般性的想法.非常直截了当.
可以把它想象为数字1到100的'猜数字'.你猜一下,我告诉你更高或更低.你说50,我说低了.你说25,我说更高.你说37 ...