이 글은 주로 PHP에서 구현된 이진 검색 알고리즘을 소개하며, 이진 검색 알고리즘의 원리와 루프, 재귀 등의 구현 기술을 예제 형태로 분석하여 도움이 필요한 모든 분들께 도움이 되었으면 좋겠습니다. .
이진 검색 방법에서는 배열이 순서 있는 배열이어야 합니다
우리 배열이 증가하는 배열이라고 가정하면 먼저 배열의 중간 위치를 찾아야 합니다.
하나. 중간 위치를 알려면 시작 위치와 끝 위치를 알아야 하며 그런 다음 중간 위치의 값을 가져와 우리 값과 비교해야 합니다.
둘. 중간 값이 주어진 값보다 크다면, 이는 우리의 값이 중간 위치 이전이라는 뜻입니다. 이때, 중간 이전이기 때문에 변경해야 할 값은 입니다. 이때 끝 위치의 값은 이 시점에서 중간에 있습니다.
셋. 반면, 중간값이 우리가 제공하는 값보다 작다면, 주어진 값이 중간 위치 이후에 있다는 뜻이다. 이때, 뒷부분의 값은 2개로 다시 나눠져야 한다. 중간 값 뒤에 있으므로 변경해야 할 값은 시작 위치 값입니다. 이때 시작 위치의 값은 지정된 값을 찾을 때까지 현재 중간 위치여야 합니다.
넷. 아니면 중간값이 초기 시작 위치, 또는 끝 위치(이 경우 주어진 값을 찾을 수 없음)와 같으면 코드를 사용하여 구현해 볼까요~
//循环实现 function getValue($num,$arr) { //查找数组的中间位置 $length=count($arr); $start=0; $end=$length; $middle=floor(($start+$end)/2); //循环判断 while($start>$end-1) { if($arr[middle]==$num) { return middle+1; }elseif($arr[middle]<$num) { //如果当前要查找的值比当前数组的中间值还要打,那么意味着该值在数组的后半段 //所以起始位置变成当前的middle的值,end位置不变。 $start=$middle; $middle=floor(($start+$end)/2); }else{ //反之 $end=$middle; $middle=floor(($start+$end)/2); }} return false; }
//循环实现 function getValue($num,$arr) { //查找数组的中间位置 $length=count($arr); $start=0; $end=$length; $middle=floor(($start+$end)/2); //循环判断 while($start>$end-1) { if($arr[middle]==$num) { return middle+1; }elseif($arr[middle]<$num) { //如果当前要查找的值比当前数组的中间值还要打,那么意味着该值在数组的后半段 //所以起始位置变成当前的middle的值,end位置不变。 $start=$middle; $middle=floor(($start+$end)/2); }else{ //反之 $end=$middle; $middle=floor(($start+$end)/2); }} return false; }
관련 추천:
Python 이진 검색 및 빠른 구현 정렬 예제에 대한 자세한 설명
php 재귀 및 비재귀 구현을 위한 이진 검색 예제 코드
위 내용은 PHP에 구현된 이진 검색 알고리즘의 분석 예의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!