>  기사  >  백엔드 개발  >  PHP 알고리즘 분석: 이진 검색 알고리즘을 사용하여 정렬된 배열에서 요소를 빠르게 찾는 방법은 무엇입니까?

PHP 알고리즘 분석: 이진 검색 알고리즘을 사용하여 정렬된 배열에서 요소를 빠르게 찾는 방법은 무엇입니까?

王林
王林원래의
2023-09-19 13:14:01834검색

PHP 알고리즘 분석: 이진 검색 알고리즘을 사용하여 정렬된 배열에서 요소를 빠르게 찾는 방법은 무엇입니까?

PHP 알고리즘 분석: 이진 검색 알고리즘을 사용하여 정렬된 배열에서 요소를 빠르게 찾는 방법은 무엇입니까?

개요:
이진 검색 알고리즘은 효율적인 검색 알고리즘으로, 순서 배열에서 특정 요소를 찾는 데 적합합니다. 이 기사에서는 이진 검색 알고리즘의 원리를 자세히 소개하고 PHP 코드 예제를 제공합니다.

  1. 원리:
    이진 검색 알고리즘은 검색 범위를 반복적으로 절반으로 줄여 대상 요소를 빠르게 찾습니다. 과정은 다음과 같습니다.
  2. 먼저 검색 범위를 배열의 시작과 끝으로 좁힙니다.
  3. 그런 다음 중간 요소의 인덱스를 계산하고 대상 요소와 비교합니다. 중간 요소에 바로 검색 성공을 반환합니다 ;
  4. 대상 요소가 중간 요소보다 작으면 대상 요소가 중간 요소의 왼쪽에 있다는 의미이며, 검색 범위가 왼쪽으로 좁아집니다 half; 대상 요소가 중간 요소보다 크다면 대상 요소가 중간 요소의 오른쪽에 있다는 의미이며 검색 범위는 오른쪽 절반으로 줄어듭니다.
  5. 위를 반복합니다. 대상 요소를 찾을 때까지 단계를 밟거나 검색 범위가 비어 있어 검색이 실패했음을 나타냅니다.
  6. 코드 예:
  7. 다음은 PHP에서 구현된 이진 검색의 코드 예입니다.
  8. function binarySearch($arr, $target) {
        $left = 0;                              // 查找范围的左边界
        $right = count($arr) - 1;               // 查找范围的右边界
    
        while ($left <= $right) {
            $mid = floor(($left + $right) / 2); // 计算中间元素的索引
    
            if ($arr[$mid] == $target) {
                return $mid;                    // 找到目标元素,返回索引
            } elseif ($arr[$mid] < $target) {
                $left = $mid + 1;               // 目标元素在中间元素的右侧
            } else {
                $right = $mid - 1;              // 目标元素在中间元素的左侧
            }
        }
    
        return -1;                              // 查找失败,返回-1
    }
    
    // 示例用法
    $sortedArray = [1, 3, 5, 7, 9, 11, 13, 15, 17, 19];
    $targetElement = 11;
    $result = binarySearch($sortedArray, $targetElement);
    
    if ($result == -1) {
        echo "目标元素 $targetElement 不存在于数组中。";
    } else {
        echo "目标元素 $targetElement 的索引是 $result。";
    }
  9. 위 예에서는 검색 범위의 왼쪽 및 오른쪽 경계를 나타내기 위해
    라는 두 개의 변수를 정의했습니다. 경계를 좁히고 최종적으로 대상 요소를 찾거나 존재하지 않는지 확인합니다.
마지막으로 이진 검색 알고리즘을 사용하여 정렬된 배열에서 특정 요소를 찾고 결과를 출력하는 방법을 보여주는 예제 사용법을 정의했습니다.

binarySearch的函数来实现二分查找。函数接受两个参数:有序数组$arr和目标元素$target。函数运行的过程中,使用了$left$right결론:

이진 검색 알고리즘은 효율적인 검색 알고리즘으로, 순서 배열에서 특정 요소를 찾는 데 적합합니다. 검색 범위를 지속적으로 좁히면 이진 검색을 통해 대상 요소를 빠르게 찾을 수 있습니다. 실제 개발에서는 필요에 따라 코드 설계를 위한 이진 검색 알고리즘을 결합하여 검색 효율성을 향상시킬 수 있습니다.

【단어수: 451 단어】

위 내용은 PHP 알고리즘 분석: 이진 검색 알고리즘을 사용하여 정렬된 배열에서 요소를 빠르게 찾는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.