一般编程 - 二进制搜索算法

Jsh*_*hee 1 php algorithm

给定N个数组的数组$数组和一个键$ key,用简单的英语编写二进制搜索算法.如果$ array包含$ key,则返回$ key的索引; 否则,返回-1.

有人能告诉我怎么做吗?

jon*_*tar 7

似乎我不应该在这里给你代码,但也许这个描述可以帮助吗?

  1. 对列表进行排序.

  2. i = length / 2

  3. 将索引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 ...

  • @user:召唤人们"白痴"将不利于你将来获得任何帮助.例如,@ jon的答案与您在维基百科页面上可以阅读的内容完全相同. (2认同)