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

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

Apr 23, 2023 am 10:05 AM

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

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

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

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

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

다음은 샘플 코드입니다.

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

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으로 문의하세요.

뜨거운 기사 태그

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

PHP 배열의 중복 제거를위한 모범 사례는 무엇입니까? PHP 배열의 중복 제거를위한 모범 사례는 무엇입니까? Mar 03, 2025 pm 04:41 PM

PHP 배열의 중복 제거를위한 모범 사례는 무엇입니까?

PHP 배열 중복 제거가 키 이름 고유성을 활용할 수 있습니까? PHP 배열 중복 제거가 키 이름 고유성을 활용할 수 있습니까? Mar 03, 2025 pm 04:51 PM

PHP 배열 중복 제거가 키 이름 고유성을 활용할 수 있습니까?

최신 PHP 코딩 표준 및 모범 사례는 무엇입니까? 최신 PHP 코딩 표준 및 모범 사례는 무엇입니까? Mar 10, 2025 pm 06:16 PM

최신 PHP 코딩 표준 및 모범 사례는 무엇입니까?

PHP 확장 및 PECL로 어떻게 작업합니까? PHP 확장 및 PECL로 어떻게 작업합니까? Mar 10, 2025 pm 06:12 PM

PHP 확장 및 PECL로 어떻게 작업합니까?

PHP에서 메시지 대기열 (Rabbitmq, Redis)을 구현하는 방법은 무엇입니까? PHP에서 메시지 대기열 (Rabbitmq, Redis)을 구현하는 방법은 무엇입니까? Mar 10, 2025 pm 06:15 PM

PHP에서 메시지 대기열 (Rabbitmq, Redis)을 구현하는 방법은 무엇입니까?

PHP 배열의 중복 제거를위한 최적화 기술은 무엇입니까? PHP 배열의 중복 제거를위한 최적화 기술은 무엇입니까? Mar 03, 2025 pm 04:50 PM

PHP 배열의 중복 제거를위한 최적화 기술은 무엇입니까?

성능 손실을 위해 PHP 배열 중복 제거를 고려해야합니까? 성능 손실을 위해 PHP 배열 중복 제거를 고려해야합니까? Mar 03, 2025 pm 04:47 PM

성능 손실을 위해 PHP 배열 중복 제거를 고려해야합니까?

반사를 사용하여 PHP 코드를 분석하고 조작하는 방법은 무엇입니까? 반사를 사용하여 PHP 코드를 분석하고 조작하는 방법은 무엇입니까? Mar 10, 2025 pm 06:12 PM

반사를 사용하여 PHP 코드를 분석하고 조작하는 방법은 무엇입니까?

See all articles