현재 위치: > 최신 기사 목록> PHP의 하프 폴드 (이진) 검색 알고리즘의 자세한 설명 및 예제 자습서

PHP의 하프 폴드 (이진) 검색 알고리즘의 자세한 설명 및 예제 자습서

gitbox 2025-06-23

1. PHP 반대 (바이너리) 검색 알고리즘 소개

반 폭포 검색 (이진 검색이라고도 함)은 차수 배열에서 대상 요소를 찾기위한 효율적인 알고리즘입니다. 이 알고리즘은 대상 요소가 발견 될 때까지 대상 값의 크기를 중간 요소와 비교하여 배열을 두 개의 반쪽으로 지속적으로 나누어 검색 범위를 점차 좁 힙니다.

1.1 알고리즘 원리

하프 조회를 접는 핵심 단계에는 다음이 포함됩니다.

1. 배열의 시작 위치를 왼쪽 으로, 끝 위치를 오른쪽 으로 설정합니다.

2. 중간 위치를 계산합니다 . 중간 = (왼쪽 + 오른쪽) / 2 .

3. 대상 값을 중간 위치 요소와 비교하십시오.

  • 동일하면 중간이 반환되고 검색이 성공적입니다.
  • 대상 값은 중간 요소보다 작고 오른쪽 으로 설정하고 왼쪽 절반에서 계속 검색합니다.
  • 대상 값은 중간 요소보다 크고 왼쪽 으로 + 1 로 설정되며 오른쪽 절반에서 계속 검색합니다.

4. 대상 값이 발견되거나 왼쪽> 오른쪽이 될 때까지 위의 단계를 반복하면 검색이 실패합니다.

1.2 알고리즘 예제

다음 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>

위의 코드는 순서 배열 및 대상 값을 매개 변수로 수신하는 함수 BinarySearch를 정의하고 배열에서 목표 값의 위치 색인을 반환하고 존재하지 않으면 -1을 반환합니다.

1.3 알고리즘 분석

반 찾기 검색의 시간 복잡성은 O (logn) 이며, 여기서 n은 배열 길이입니다. 각 조회는 범위를 절반으로 줄이기 때문에 성능은 선형 조회보다 훨씬 우수하며, 이는 대규모 차수 배열의 빠른 위치 요소에 적합합니다.

2. 알고리즘의 중요성

2.1 대규모 순서 배열의 효율적인 검색

하프 찾기를 접 으면 검색 시간이 크게 단축됩니다. 특히 데이터 볼륨이 클 경우 전체 배열을 가로 지르는 비 효율성을 피하면서 대상 요소를 빠르게 찾을 수 있습니다.

2.2 프로그램 실행 효율성 향상

자주 검색이 필요한 애플리케이션 시나리오에서 하프 피니쉬 검색을 사용하면 프로그램의 전체 시간 간접 시간을 줄이고 자원 소비를 줄이며 응답 속도 및 사용자 경험을 향상시킬 수 있습니다.

3. 요약

이 기사는 PHP 하프 포인트 검색 알고리즘의 원칙, 구현 코드 및 성능 분석을 소개합니다. 이진 검색 마스터 링은 효율적인 PHP 응용 프로그램을 개발하는 데 특히 중요하며, 이는 검색 속도를 효과적으로 개선하고 프로그램 성능을 최적화 할 수 있습니다. 개발자는이 알고리즘을 이해하고 유연하게 사용하는 것이 좋습니다.