병합 정렬(병합 정렬이라고도 함)은 O(n log n) 비교를 기반으로 하는 정렬 알고리즘입니다. 대부분의 구현은 안정적인 정렬을 생성합니다. 이는 구현이 정렬된 출력에서 동일한 요소의 입력 순서를 유지함을 의미합니다.
이제 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(', ',$test_array ); echo "\n排序后数组:"; echo implode(', ',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 중국어 웹사이트의 기타 관련 기사를 참조하세요!