ホームページ  >  記事  >  バックエンド開発  >  PHPのデータ構造(1)二分探索

PHPのデータ構造(1)二分探索

WBOY
WBOYオリジナル
2016-08-08 09:32:52980ブラウズ

二分探索の基本的な考え方は、順序付けられた配列の中央の値と探している値を比較することです。探している値が配列の中央の値よりも大きい場合、それはすべての値を意味します。順序付けされた配列の中間値より前の値はすべて検索対象の値より小さいため、配列の中間値より前の値をすべて除外し、中間値から必要な値を検索し続けることができます。コードは次のように実装されます:

//二分探索
function bin_search($array,$search){
$low=0;
$height=count($array)-1;//配列の長さを取得

while($low<=$height){
$mid =floor(($low+$height)/2);//中央の数値を取得して、floor タイプにキャストし、エラーを防止します
if($array[$mid]==$search){
return $mid+1;//見つかったシリアル番号を返す
}else if($array[ $mid]<$search){
//中間の値が小さい場合値をチェックした場合、$mid の左側の値はすべて $search 未満です。このとき、$mid は $low
$ low=$mid+1;
}else に代入される必要があります。 if($array[$mid]>$search){

//このとき、真ん中の値がチェックした値より大きいということは、$midより右側の値はすべては $search より大きいため、この時点では $mid を $height に割り当てる必要があります
$height=$mid-1;
}
return "Search failed";//検索は失敗しました。項目が配列値に存在しません

}

}
$arr=array(1,4,6,33,75,88,89,93);
echo bin_search($arr, 33);
echo bin_search($arr,66);?>

以上、PHPのデータ構造(1)二分探索について、内容も含めて紹介しましたが、PHPチュートリアルに興味のある方の参考になれば幸いです。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。