>백엔드 개발 >PHP 튜토리얼 >PHP에서 배열 정렬을 구현하는 방법: 빠른 정렬, 삽입 정렬, 병합 정렬 알고리즘

PHP에서 배열 정렬을 구현하는 방법: 빠른 정렬, 삽입 정렬, 병합 정렬 알고리즘

不言
不言원래의
2018-07-19 14:20:421647검색

PHP에서 배열을 정렬하는 방법은 여러 가지가 있으며 각 배열 정렬에는 고유한 원리가 있습니다. 빠른 정렬 알고리즘, 병합 정렬 알고리즘 및 삽입 정렬 알고리즘의 예를 자세히 살펴보겠습니다.

특수한 모양의 배열 순회

다음 배열에 있는 숫자의 평균을 구하세요.

$arr1 = array(
1, 2, array(31, 32, 33), 4,
array(51, 52, 53, array(541, 542, 543, 544) ),
6, array(71, 72, 73),
);
$count = 0; //计数
$sum = GetArraySum($arr1);
echo “\

빠른 정렬 알고리즘

원리 설명:

이러한 배열의 경우: [5, 1,2 , 6,7 ];

첫 번째 항목을 꺼내고(가운데 배열로 사용) 나머지 항목을 그것과 비교하여 두 개의 배열로 나눕니다.

왼쪽 배열 항목은 가운데 항목보다 작습니다. 오른쪽 배열 항목은 중간 항목보다 작지 않습니다.

왼쪽 배열과 오른쪽 배열이 이미 정렬된 배열인 경우 이 세 개를 병합하여 최종 결과를 얻습니다.

왼쪽 배열과 오른쪽 배열이 아직 정렬된 배열이 아닌 경우 계속해서 이 함수를 재귀적으로 사용하여 정렬된 배열을 얻습니다.

주요 다이어그램:

PHP에서 배열 정렬을 구현하는 방법: 빠른 정렬, 삽입 정렬, 병합 정렬 알고리즘

주요 데이터:

$arr1 = [5, 2, 1, 6,7] //원리 1

Small: [2, 1], Big 하나: [6, 7], 중간 하나: [5]

세 개 결합: [1, 2, 5, 6, 7];

$arr1 = [2, 1] //효과적으로 원리를 설명합니다. 2

가운데: [2], 왼쪽: [1], []

특정 사례:

$arr1 = [5, 2, 4, 6, 1, 3];
$arr1 = [5, 2, 4, 6, 1, 3];
//$arr1 = [5, 3, 2, 8, 7];
echo “\

삽입 정렬 알고리즘

원리 설명:

이러한 배열의 경우: [2, 3, 4 , 1 ];

이미 정렬된 배열에 특정 숫자 n을 삽입하려면

이 배열의 항목과 n을 뒤에서 앞으로 비교하면 됩니다. 단, 특정 항목이 n보다 크다면

움직이기만 하면 됩니다. 항목을 한 자리 뒤로 이동한 다음 계속 앞으로 가져와서 비교합니다. n보다 크면 한 자리 뒤로 이동합니다.

결국 n보다 큰 것이 없을 때에는 뒤로 이동할 때 비웠던 자리에 n을 넣어줍니다.

배열의 경우 첫 번째 항목은 "정렬된" 배열로 간주될 수 있고,

그런 다음 두 번째 항목은 위의 원칙에 따라 "삽입 정렬"될 수 있으므로 처음 두 항목은 정렬될 수 있으며,

그리고 두 개의 요소가 있는 "정렬된 배열"입니다. 이어서 비유가 이어집니다.

원리 다이어그램:

PHP에서 배열 정렬을 구현하는 방법: 빠른 정렬, 삽입 정렬, 병합 정렬 알고리즘

원리 데이터:

$arr1 = [2, 3, 4, 1] //원리 1

$arr1 = [2, 3, 1]; / /원리 2

$arr1 = [2, 1]; //원리 3

$arr1 = [1, 2] //원리 3

을 효과적으로 설명하는 데이터

특정 사례:

$arr1 = [5, 2, 4, 6, 1, 3];
$arr1 = [2, 3, 4, 1];
$arr1 = [2, 4, 5, 6, 1, 3];
echo “\

병합 정렬 알고리즘

원리 설명:

이러한 배열의 경우: $arr1 = [1, 3, 5, 2, 4, 6]; $a = [ 1 , 3, 5],
$b = [2, 4, 6];

정렬된 배열이 2개 있을 경우, 두 배열에 대해 다음과 같은 연산을 수행하여 정렬된 배열을 얻을 수 있습니다. "퓨전 배열 " 이 두 배열 중

배열 a의 첫 번째 항목 a1을 꺼낸 다음 배열 b의 첫 번째 항목 b1을 꺼내고 a1과 b1의 크기를 비교하고

더 작은 항목을 추가합니다(a1로 가정). 새 배열에 넣고 해당 배열 a의 첫 번째 항목을 삭제하고,

그런 다음 해당 배열의 첫 번째 항목(지금은 데이터가 아님)을 꺼내고 계속해서 두 항목의 크기를 비교합니다

매번 작은 것을 새 배열에 넣고 다음 "삭제, 가져오기, 비교"를 계속합니다. . . .

최종 결과는 새 배열에서 새로 정렬된 배열을 얻을 수 있다는 것입니다.

아직 정렬되지 않은 배열의 경우 재귀적 방법이 계속 "2개로 분할"되는 한 결국 가장 짧은 배열(1개 또는 0개 셀만)을 얻게 됩니다. 이러한 종류의 배열은 자연스럽게 정렬됩니다.

원리 다이어그램:

PHP에서 배열 정렬을 구현하는 방법: 빠른 정렬, 삽입 정렬, 병합 정렬 알고리즘

원리 데이터:

$arr1 = [1, 3, 5, 4, 6, 7, 8 ] //원리를 강력하게 보여주는 데이터 1

가운데부터 2 : [ ]; [ 6, 7, 8]

[ 1, 3, 4, 5, ]

$arr1 = [1, 3, 2, 4] // 원리를 강력하게 보여주는 데이터 2

사례 :


$arr1 = [5, 2, 4, 6, 1, 3];
echo “\

관련 추천 :

php 버블 정렬 퀵 정렬, php 버블 정렬

php 배열 정렬 방법 공유(버블 정렬, 선택 정렬)

위 내용은 PHP에서 배열 정렬을 구현하는 방법: 빠른 정렬, 삽입 정렬, 병합 정렬 알고리즘의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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