>  기사  >  백엔드 개발  >  검색 알고리즘

검색 알고리즘

WBOY
WBOY원래의
2024-07-19 00:46:501301검색

Search Algorithms

PHP의 이진 검색 이해

이진 검색은 정렬된 배열에서 요소를 찾는 데 더 효율적인 알고리즘입니다. 검색 간격을 반복적으로 절반으로 나누어 작동합니다. BinarySearch 기능에 대한 자세한 설명은 다음과 같습니다.

function binarySearch(array $arr, float|int $x)
{
    $low = 0;
    $high = count($arr)-1;
    // $midIndex = (int) ($low + ($high - $low)/2);
    $i = 0;
    while($low <= $high){
        $i++;
        $midIndex = (int) ($low + (($high - $low)/2)); //the same as  intdiv($low + $high, 2);

        if($arr[$midIndex] == $x){
            return "The number {$x} was found in index {$midIndex} of the array. The number of iteration was {$i}";
        }elseif($x > $arr[$midIndex]){
            $low = $midIndex +1;
            echo $low."\n";
        }else{
            $high = $midIndex - 1;
        }
    }

return "The number {$x} was not found in the array";


}

echo binarySearch([1,2,3,4,5,6,7,8,9,10,44,45,46,47,48,49,50], 45)

binarySearch 함수는 두 개의 매개변수를 허용합니다:

  1. $arr: 정렬된 정수 배열.
  2. $x: 검색할 숫자로 부동 소수점 또는 정수일 수 있습니다.
  3. $low는 배열의 첫 번째 인덱스로 초기화됩니다.
  4. $high는 배열의 마지막 인덱스로 초기화됩니다.
  5. $i는 반복 횟수를 추적하는 카운터입니다.
  6. 검색 간격이 유효한 동안($low는 $high보다 작거나 같음) while 루프가 실행됩니다.
  7. $midIndex는 현재 간격의 중간 인덱스로 계산됩니다.
  8. 가운데 요소가 $x와 같으면 함수는 인덱스와 반복 횟수를 반환합니다.
  9. $x가 중간 요소보다 큰 경우 $low를 midIndex + 1로 조정합니다(검색 범위를 위쪽 절반으로 좁힙니다).
  10. $x가 중간 요소보다 작으면 $high를 midIndex - 1로 조정합니다(검색 범위를 아래쪽 절반으로 좁힙니다).

PHP의 선형 검색 이해

선형 검색은 배열에서 특정 요소를 찾는 데 사용되는 가장 간단한 검색 알고리즘 중 하나입니다. PHP의 선형 검색 기능을 분석해 보겠습니다.

function linearSearch(array $arr, float|int $x)
{
    for($i=0; $i < count($arr); $i++){
        if($x === $arr[$i]){
            return "The number {$x} was found in index {$i} of the array\n";
        }
    }

    return "The number {$x} was not found in the array\n";
}

echo linearSearch([1,5,6,3,4,11,3,2], 4);

linearSearch 함수는 두 개의 매개변수를 허용합니다:

  1. $arr: 정수 배열
  2. $x: 검색할 숫자로 부동 소수점 또는 정수일 수 있습니다.
  3. for 루프는 배열의 각 요소를 반복합니다. count($arr) 함수는 배열의 요소 수를 반환합니다.
  4. 루프 내부에서 코드는 현재 요소($arr[$i])가 $x와 같은지 확인합니다. 일치하는 항목이 발견되면 해당 숫자가 발견된 인덱스를 나타내는 메시지를 반환합니다.
  5. 숫자를 찾지 못한 채 루프가 완료되면 함수는 배열에서 숫자를 찾을 수 없다는 메시지를 반환합니다.
  6. 선형 검색은 간단하고 구현하기 쉽습니다. 원하는 요소를 찾거나 배열의 끝에 도달할 때까지 배열의 각 요소를 순차적으로 확인합니다. 이 접근 방식은 간단하지만 시간 복잡도가 O(n)이기 때문에 대규모 배열에는 비효율적일 수 있습니다.

위 내용은 검색 알고리즘의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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