이진 검색으로도 알려진 PHP의 하프 찾기 검색 알고리즘은 순서대로 요소 위치를 효율적으로 찾는 데 사용되는 고전적인 알고리즘입니다. 검색 범위를 반으로 끊임없이 분할하고 대상이 존재하지 않도록 결정되거나 결정될 때까지 목표 요소와 중간 요소 사이의 크기 관계를 판단하여 검색 범위를 빠르게 좁 힙니다.
하프 조회를 접는 핵심 단계에는 다음이 포함됩니다.
배열의 시작 색인을 왼쪽으로 , 끝 인덱스를 오른쪽 으로 설정하십시오.
중간 지수 중간을 계산하십시오. 즉 , (왼쪽 + 오른쪽) / 2 .
대상 값을 중간 요소와 비교하십시오. 동일하면 인덱스 를 반환하면 검색이 성공적입니다.
대상 값이 중간 요소보다 작은 경우 오른쪽 에서 1-1 로 설정하고 왼쪽 절반에서 계속 검색하십시오.
대상 값이 중간 요소보다 큰 경우 왼쪽 으로 + 1로 설정하고 오른쪽 절반에서 계속 검색하십시오.
목표 값 또는 왼쪽> 오른쪽이 발견 될 때까지 위의 단계를 반복하여 검색이 실패했음을 나타냅니다.
다음은 반 찾기 검색 알고리즘의 구현을 보여주는 PHP 코드 예제입니다.
function binarySearch($arr, $target) {
$left = 0;
$right = count($arr) - 1;
while ($left <= $right) {
$mid = intval(($left + $right) / 2);
if ($arr[$mid] == $target) {
return $mid; // 목표 값의 위치
}
if ($arr[$mid] < $target) {
$left = $mid + 1; // 오른쪽 절반에서 계속 검색하십시오
} else {
$right = $mid - 1; // 왼쪽 절반에서 계속 검색하십시오
}
}
return -1; // 목표 값은 찾을 수 없었습니다
}
<p>$arr = [1, 3, 5, 7, 9, 11, 15];<br>
$target = 7;<br>
$index = binarySearch($arr, $target);<br>
if ($index != -1) {<br>
echo "대상 가치 $target 배열의 위치는입니다 $index";<br>
} else {<br>
echo "대상 가치 $target 배열에는 존재하지 않습니다";<br>
}<br>
위의 코드는 정렬 된 배열 및 대상 값을 매개 변수로 허용하는 이진 검색 함수를 정의하고 배열에서 대상 값의 인덱스 위치를 리턴하고 존재하지 않으면 -1을 반환합니다.
반 찾기 검색 알고리즘의 시간 복잡성은 O (log n) 이며, 여기서 n은 배열 길이입니다. 각 조회는 범위를 절반으로 줄이며 이는 선형 조회보다 훨씬 효율적입니다.
따라서 바이너리 검색은 대형 순서 어레이의 빠른 포지셔닝 요소에 매우 적합합니다.
이진 검색은 검색 범위를 크게 좁히고 비교 횟수를 줄이며 빠른 포지셔닝을 달성 할 수 있습니다. 특히 데이터 볼륨이 큰 시나리오에 적합합니다.
이진 검색을 사용하는 빈번한 검색 작업이있는 응용 프로그램에서는 이진 검색을 사용하면 시간 간접비를 크게 줄이고 전반적인 실행 효율성을 향상 시키며 불필요한 횡선을 피할 수 있습니다.
이 기사는 PHP 중간 하프 피니시 (Binary Search) 알고리즘의 원리와 구현을 체계적으로 설명하고 코드 예제를 통해 특정 사용법을 보여줍니다. 이 알고리즘은 낮은 시간 복잡성과 고효율의 특성을 가지며 순서 배열의 효율적인 검색에 적합합니다. 이 알고리즘을 마스터하면 개발자가 문제 찾기 및 프로그램 성능을 다루는 능력을 향상시키는 데 도움이됩니다.