この記事では主に PHP の二分探索アルゴリズムを紹介し、サンプルの形で二分探索アルゴリズムの原理と具体的な実装テクニックをまとめて分析します。もちろん、大企業での就職活動ではこのような質問が行われます。具体的な詳細は次のとおりです。
二分法(dichotomy) つまり1つの 2つに分ける方法 [a, b] を R の閉区間と仮定し、逐次二分法は次の区間列 ([an, bn]) を作成します: a0= a, b0=b であり、任意の自然数 n について、[an+1, bn+1] は [an, cn] と等しいか、[cn, bn] と等しくなります。ここで、cn は [an, bn].
例 1:
header('Content-Type: text/html; charset=utf-8;'); $arr = array(2,33,22,1,323,321,28,36,90,123); sort($arr); //二分法查找 echo $index = binarySearch($arr,321); function binarySearch($arr,$key){ $len = count($arr); $mid = -1; $start = 0; $end = $len-1; while($start<=$end){ $mid = (int)(($start+$end)/2); echo $mid."\n"; if($arr[$mid] == $key){ return $mid; }else if($arr[$mid] < $key){ $start = $mid+1; }else if($arr[$mid] > $key){ $end = $mid-1; } } }
例 2:
<?php //search函数 其中$array为数组,$k为要找的值,$low为查找范围的最小键值,$high为查找范围的最大键值 function search($array, $k, $low=0, $high=0) { if(count($array)!=0 and $high == 0) //判断是否为第一次调用 { $high = count($array); } if($low <= $high) //如果还存在剩余的数组元素 { $mid = intval(($low+$high)/2); //取$low和$high的中间值 if ($array[$mid] == $k) //如果找到则返回 { return $mid; } elseif ($k < $array[$mid]) //如果没有找到,则继续查找 { return search($array, $k, $low, $mid-1); } else { return search($array, $k, $mid+1, $high); } } return -1; } $array = array(4,5,7,8,9,10); //测试search函数 echo search($array, 8); //调用search函数并输出查找结果 ?>
概要: 上記がこの記事の全内容です、皆さんの学習に役立つことを願っています。
関連する推奨事項:
php
データベース操作の実装モデルクラスURLの暗号化と復号化の実装以上がPHPにおける二分探索アルゴリズム例の詳細説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。