"일꾼이 일을 잘하려면 먼저 도구를 갈고 닦아야 한다." - 공자, 『논어』.
첫 장 > 프로그램 작성 > 검색 알고리즘

검색 알고리즘

2024-07-31에 게시됨
검색:771

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  $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 



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

  1. $arr: 정수 배열입니다.
  2. $x: 검색할 숫자로, 부동 소수점 또는 정수일 수 있습니다.
  3. for 루프는 배열의 각 요소를 반복합니다. count($arr) 함수는 배열의 요소 수를 반환합니다.
  4. 루프 내부에서 코드는 현재 요소($arr[$i])가 $x와 같은지 확인합니다. 일치하는 항목이 발견되면 해당 숫자가 발견된 인덱스를 나타내는 메시지를 반환합니다.
  5. 숫자를 찾지 못한 채 루프가 완료되면 함수는 배열에서 숫자를 찾을 수 없다는 메시지를 반환합니다.
  6. 선형 검색은 간단하고 구현하기 쉽습니다. 원하는 요소를 찾거나 배열의 끝에 도달할 때까지 배열의 각 요소를 순차적으로 확인합니다. 이 접근 방식은 간단하지만 시간 복잡도가 O(n)이기 때문에 대규모 배열에는 비효율적일 수 있습니다.
릴리스 선언문 이 글은 https://dev.to/ayowandeapp/search-algorithms-2613?1에서 복제됩니다.1 침해 내용이 있는 경우, [email protected]으로 연락하여 삭제하시기 바랍니다.
최신 튜토리얼 더>

부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.

Copyright© 2022 湘ICP备2022001581号-3