二分検索法-POP
二分ルックアップは折半ルックアップ(Binary Search)とも呼ばれ、効率の高いルックアップ方法です.ただし、半角検索では、リニア・テーブルはシーケンス・ストレージ構造を採用する必要があり、テーブル内の要素はキーワード順に並べられています.
public function shu()
{
$arr = array(1,2,4,6,7,8,9,10,13,16,17,19);
$low = 0;
$height = count($arr);
$cha = 17;
$index = $this->digui($arr, $low, $height, $cha);
return $index;
}
public function digui($arr, $low, $height, $cha)
{
if ($arr[$height - 1] < $cha) return -1; //
if ($arr[$low] > $cha) return -1; //
$middle = intval(floor(($low + $height) / 2));
if ($arr[$middle] == $cha) return $middle; // ;
if ($arr[$middle] > $cha) { // ,
return $this->digui($arr, $low, $middle, $cha);
}
if ($arr[$middle] < $cha) { // ,
return $this->digui($arr, $middle, $height, $cha);
}
}