php算法:二分查找

使用二分查找算法的前提条件:数组中的元素必须是从大到小排序,并且还不可以重复。

function kay_search($list, $item)
{
  $low = 0; // 开始查找位置
  $high  = count($list) - 1; // 最大查找次数
  $mid   = floor(($high + $low) / 2); // 取分查找中间数
  while ($low <= $high) {

    if ($item == $list[$mid]) {
      return $mid;
    } else if ($item > $list[$mid]) {
      $low = $mid + 1;
    } else {
      $high = $mid - 1;
    }

    $mid = floor(($high + $low) / 2);
  }

}
echo kay_search(array(1, 2, 3, 4, 6, 20, 33), 3);
评论
:broken_heart: :confounded: :flushed: :frowning: :grinning: :heart: :kissing_heart: :mask: :pensive: :rage: :relaxed: :scream: :smile: :smirk: :sob: :stuck_out_tongue_closed_eyes: :stuck_out_tongue_winking_eye: :wink: