이 기사의 예에서는 PHP 바이너리 검색 알고리즘을 설명합니다. 참고할 수 있도록 자세한 내용은 다음과 같습니다.
binarySearch
이진 검색에서 사용하는 방법은 비교적 이해하기 쉽습니다. 배열을 예로 들어 보겠습니다. 🎜>① 먼저 배열의 중앙((low+top)/2)에 있는 값을 취하고,
② 찾으려는 숫자와 비교하여 중간 값보다 큰지 확인합니다. , 첫 번째 값을 중간 위치로 바꾸고 첫 번째 단계를 계속합니다. 중간 값보다 작으면 꼬리 값을 중간 위치 위의 위치로 바꾸고 첫 번째 단계를 계속합니다.
③ 원하는 숫자를 찾을 때까지 두 번째 단계를 반복
예를 들어 1, 3, 9, 23, 54에서 숫자 23을 찾습니다.
의 첫 번째 위치는 0이고, 마지막 위치는 4이고 중간 위치는 2입니다. 값이 23보다 작은 9이면 첫 번째 위치는 2로 업데이트됩니다. +1은 3이면 중간 위치는 (3+4)/2=입니다. 3이고 값은 23입니다. 값이 같으면
// 非递归算法: // $target是要查找的目标 $arr是已经排序好的数组 function binary(&$arr,$low,$top,$target){ while($low <= $top){ //由于php取商是有小数的,所以向下取整,不过也可不加,数组也会取整 $mid = floor(($low+$top)/2); echo $mid."<br>"; if($arr[$mid]==$target){ return $arr[$mid]; }elseif($arr[$mid]<$target){ $low = $mid+1; }else{ $top = $mid-1; } } return -1; }
// 递归算法: function binaryRecursive(&$arr,$low,$top,$target){ if($low<=$top){ $mid = floor(($low+$top)/2); if($mid==$target){ return $arr[$mid]; }elseif($arr[$mid]<$target){ return binaryRecursive($arr,$mid+1,$top,$target); }else{ return binaryRecursive($arr,$low,$top-1,$target); } }else{ return -1; } }
이 기사가 되길 바랍니다. PHP 프로그래밍에 종사하는 모든 사람에게 도움이 될 것입니다.
더 많은 PHP 이진 검색 알고리즘 예제[재귀 및 비재귀 방법] 관련 기사를 보려면 PHP 중국어 웹사이트를 주목하세요!