>  기사  >  백엔드 개발  >  함수를 사용하지 않고 PHP에서 배열을 정렬하는 방법

함수를 사용하지 않고 PHP에서 배열을 정렬하는 방법

PHPz
PHPz원래의
2023-04-23 10:05:44719검색

PHP는 웹 애플리케이션 개발에 널리 사용되는 매우 인기 있는 오픈 소스 서버 측 스크립팅 언어입니다. PHP에서 정렬은 데이터를 빠르고 정확하게 처리하는 데 도움이 되는 매우 중요한 작업입니다.

PHP에서는 일반적으로 배열을 정렬하기 위해 내장 함수나 배열 메서드를 사용합니다. 하지만 이번 글에서는 PHP 내장 함수와 배열 메소드를 사용하지 않고 정렬하는 또 다른 방법에 대해 논의하고 싶습니다.

PHP에서는 비교 기반 정렬 알고리즘을 사용하여 정렬할 수 있습니다. 이러한 알고리즘은 두 요소 간의 크기 관계를 비교한 다음 특정 순서로 배치하는 데 의존합니다. 이 정렬 방법은 매우 효과적이지만 구현하려면 함수나 배열 메서드를 사용해야 합니다.

하지만 비비교 정렬이라는 알고리즘도 있습니다. 이러한 알고리즘은 두 요소 간의 크기 관계를 비교하지 않고 정렬할 수 있으므로 비교 기반 정렬 알고리즘보다 더 빠르고 메모리 효율적입니다.

비비교 정렬 알고리즘 중 하나가 카운팅 정렬입니다. 이 정렬 알고리즘은 해당 값을 기준으로 정렬에서 각 요소의 위치를 ​​결정합니다. 각 요소의 값은 정렬에서 요소보다 작은 요소 수입니다. 그런 다음 임시 배열을 사용하여 각 값이 발생하는 횟수를 저장한 다음 개수 배열을 기반으로 각 요소의 위치를 ​​결정할 수 있습니다.

다음은 샘플 코드입니다.

function countingSort($arr) {
    $maxVal = max($arr);
    $count = array_fill(0, $maxVal + 1, 0);
    $output = array_fill(0, count($arr), 0);

    foreach ($arr as $val) {
        $count[$val]++;
    }

    for ($i = 1; $i <= $maxVal; $i++) {
        $count[$i] += $count[$i - 1];
    }

    for ($i = count($arr) - 1; $i >= 0; $i--) {
        $output[$count[$arr[$i]] - 1] = $arr[$i];
        $count[$arr[$i]]--;
    }

    return $output;
}

계산 정렬에서는 먼저 배열에서 가장 큰 요소를 찾은 다음 계수 배열을 만듭니다. 다음으로 전체 배열을 반복하고 count 배열에 있는 각 요소의 발생 횟수를 기록합니다. 그런 다음 출력 배열을 만들고 count 배열의 값으로 채웁니다. 마지막으로 출력 배열이 정렬된 결과로 반환됩니다.

계수 정렬을 사용하는 것은 PHP 내장 함수 및 배열 방법을 사용하는 정렬 방법보다 훨씬 빠릅니다. 이 방법의 시간 복잡도는 O(n+k)입니다. 여기서 n은 요소 수이고 k는 요소의 최대값입니다.

요약하자면, PHP는 정렬 작업을 위한 많은 내장 함수와 배열 메서드를 제공하지만, 비비교 정렬 알고리즘을 사용하는 것이 더 효율적이고 메모리를 절약할 수 있습니다. 계수 정렬은 배열을 빠르게 정렬하는 데 도움이 되는 매우 유용한 알고리즘 중 하나입니다.

위 내용은 함수를 사용하지 않고 PHP에서 배열을 정렬하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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