配列に特定の要素が含まれているかどうかを確認するバイナリ メソッド、順方向および逆方向の順序と互換性がある、コード実装:
コードは以下のように表示されます。
$searchValue = (int)$_GET['key'];
関数検索(配列 $array, $value)
{
$max = count($array)-1;
$min = 0;
$isAscSort = $array[$min]
一方 (TRUE) {
$sum = $min+$max;
$midKey = (int)($sum%2 == 1 ? ceil($sum/2) : $sum/2);
if ($max
-1 を返します;
} else if ($value == $array[$midKey]) {
1 を返します;
} else if ($value > $array[$midKey]) {
$isAscSort ? $min = $midKey+1 : $max = $midKey-1;
} else if ($value
$isAscSort ? $max = $midKey-1 : $min = $midKey+1;
}
}
}
$array = 配列(
「4」、「5」、「7」、「8」、「9」、「10」、「11」、「12」
);
// 正のシーケンス
エコー検索($array, $searchValue);
// 逆順
rsort($array);
エコー検索($array, $searchValue);
私は以前これを検索し、Baidu Encyclopedia (Java の実装) の例を見たことがあります。また、他の技術マニアが書いたいくつかのコードには問題があり、人々を誤解させるためにテストを行わずにリリースしています。検索できます 検索したら、昨日は何もすることがなかったので、みんなに共有するために書きました。
この配列は非連続キーを考慮していません。これは主に必要に応じて拡張できるメソッドです。
http://www.bkjia.com/PHPjc/371967.htmlwww.bkjia.com本当http://www.bkjia.com/PHPjc/371967.html技術記事配列に特定の要素が含まれているかどうかを確認するためのバイナリ メソッド (順方向および逆順と互換性があります) コードの実装: コードは次のとおりです。 ?php $searchValue = (int)$_GET['key']; 、$value) { $max ...