- /**二分探索: 配列内の値の位置を見つけます
- * @$arr: 順序どおりに配置されている場合、演算対象の配列です
- * @$val: 検索される値
- * @$low:検索の開始位置、デフォルトは配列からです 最初の番号を見つけます
- * @hight: 検索の終了位置
- **/
- function binarySearch($arr, $val, $hight, $low=0){
- while($low <= $hight){
- $ Mid = ceil($low + ($hight - $low) / 2);
- if($arr[$mid] == $val){
- return $mid;
- }elseif($arr[$mid] > $val){
- $hight = $mid -1;
- }else{
- $low = $mid +1;
- }
- }
- return -1;
- }
- header('Content-Type: text/html; charset =utf-8');
-
- //配列を生成します
- $arr = range(0,20);
- echo '
';</li>
<li>print_r($arr);</li>
<li>echo ' ' ;
-
- $low = 0;
- $hight = count($arr) - 1;
- $findVal = rand(0, 20);
- $index = binarySearch($arr, $findVal, $hight, $low);
- printf("見つかった値 '%d' は配列内の添字 '%s' です", $findVal, $index);
- ?>
コードをコピー
|