>  기사  >  백엔드 개발  >  PHP는 병합 정렬 알고리즘을 구현합니다(코드 예)

PHP는 병합 정렬 알고리즘을 구현합니다(코드 예)

藏色散人
藏色散人원래의
2019-03-14 09:37:543720검색

병합 정렬(병합 정렬이라고도 함)은 O(n log n) 비교를 기반으로 하는 정렬 알고리즘입니다. 대부분의 구현은 안정적인 정렬을 생성합니다. 이는 구현이 정렬된 출력에서 ​​동일한 요소의 입력 순서를 유지함을 의미합니다.

PHP는 병합 정렬 알고리즘을 구현합니다(코드 예)

이제 PHP를 사용하여 병합 정렬 알고리즘을 구현하는 방법을 소개하겠습니다.

PHP 코드 예시는 다음과 같습니다.

<?php
function merge_sort($my_array){
    if(count($my_array) == 1 ) return $my_array;
    $mid = count($my_array) / 2;
    $left = array_slice($my_array, 0, $mid);
    $right = array_slice($my_array, $mid);
    $left = merge_sort($left);
    $right = merge_sort($right);
    return merge($left, $right);
}
function merge($left, $right){
    $res = array();
    while (count($left) > 0 && count($right) > 0){
        if($left[0] > $right[0]){
            $res[] = $right[0];
            $right = array_slice($right , 1);
        }else{
            $res[] = $left[0];
            $left = array_slice($left, 1);
        }
    }
    while (count($left) > 0){
        $res[] = $left[0];
        $left = array_slice($left, 1);
    }
    while (count($right) > 0){
        $res[] = $right[0];
        $right = array_slice($right, 1);
    }
    return $res;
}
$test_array = array(100, 54, 7, 2, 5, 4, 1);
echo "原始数组 : ";
echo implode(&#39;, &#39;,$test_array );
echo "\n排序后数组:";
echo implode(&#39;, &#39;,merge_sort($test_array))."\n";

출력:

原始数组 : 100, 54, 7, 2, 5, 4, 1 
排序后数组:1, 2, 4, 5, 7, 54, 100

관련 함수 소개:

array_slice() 함수는 조건에 따라 배열의 값을 꺼내서 반환합니다.

array_slice ( array $array , int $offset [, int $length = NULL [, bool $preserve_keys = FALSE ]] ) : array

array_slice()는 오프셋 및 길이 매개변수로 지정된 배열의 시퀀스를 반환합니다.

implode() 함수는 1차원 배열의 값을 문자열로 변환합니다.

관련 추천: "PHP 튜토리얼"

이 글은 PHP에서 병합 정렬 알고리즘을 구현하는 방법에 대한 소개입니다. 도움이 필요한 친구들에게 도움이 되길 바랍니다!

위 내용은 PHP는 병합 정렬 알고리즘을 구현합니다(코드 예)의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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