배열 정렬은 프로그래밍에서 매우 일반적인 작업이며 지정된 규칙에 따라 배열에서 요소를 재 배열하는 데 도움이됩니다. PHP에서는 여러 정렬 기능이 내장되어 있지만 경우에 따라 특정 요구 사항을 충족시키기 위해 자체 정렬 알고리즘을 작성해야 할 수도 있습니다. 이 기사는 공통 버블 분류, 선택 정렬 및 삽입 분류 알고리즘을 포함하여 PHP 배열 정렬 알고리즘을 사용자 정의하는 방법에 중점을두고 실제 코드 예제를 제공합니다.
버블 분류는 인접한 요소를 반복적으로 비교하고 전체 배열을 순서할 때까지 위치를 교환하는 간단한 분류 알고리즘입니다. 시간 복잡성은 O (n²)이며 데이터 볼륨이 적을 때 사용하기에 더 적합합니다.
function bubbleSort(array &$arr) {
$n = count($arr);
for ($i = 0; $i < $n - 1; $i++) {
for ($j = 0; $j < $n - $i - 1; $j++) {
if ($arr[$j] > $arr[$j + 1]) {
$tmp = $arr[$j];
$arr[$j] = $arr[$j + 1];
$arr[$j + 1] = $tmp;
}
}
}
}
정렬을 선택하는 기본 아이디어는 분류되지 않은 부분에서 가장 작은 (또는 가장 큰) 요소를 선택하여 정렬 된 부분의 끝에 놓는 것입니다. 버블 분류보다 약간 최적화되었지만 소규모 데이터 분류에 적합한 시간 복잡성은 여전히 O (n²)입니다.
function selectionSort(array &$arr) {
$n = count($arr);
for ($i = 0; $i < $n - 1; $i++) {
$min_idx = $i;
for ($j = $i + 1; $j < $n; $j++) {
if ($arr[$j] < $arr[$min_idx]) {
$min_idx = $j;
}
}
$tmp = $arr[$i];
$arr[$i] = $arr[$min_idx];
$arr[$min_idx] = $tmp;
}
}
삽입 정렬은 각 새 요소를 이미 정렬 된 부품에 삽입하여 새 순서 배열을 형성하는 방법입니다. 시간 복잡성은 O (n²)이지만 데이터 볼륨이 작을 때 더 효율적이며 소규모 데이터의 분류에 종종 사용됩니다.
function insertionSort(array &$arr) {
$n = count($arr);
for ($i = 1; $i < $n; $i++) {
$key = $arr[$i];
$j = $i - 1;
while ($j >= 0 && $arr[$j] > $key) {
$arr[$j + 1] = $arr[$j];
$j--;
}
$arr[$j + 1] = $key;
}
}
다음으로 Bubble Sort 알고리즘을 사용하여 PHP 배열을 오름차순 순서로 정렬합니다.
$arr = [5, 2, 8, 3, 1];
bubbleSort($arr);
정렬 된 배열은 다음과 같습니다.
[1, 2, 3, 5, 8]
이 기사에서는 3 가지 일반적인 PHP 배열 정렬 알고리즘 (버블 정렬, 선택 정렬 및 삽입 정렬을 소개합니다. 이러한 분류 방법은 간단하지만 기본 정렬 알고리즘 아이디어를 마스터하는 데 도움이 될 수 있습니다. 실제 개발에서 특정 요구에 따라 적절한 정렬 방법을 선택할 수 있습니다. 보다 효율적인 정렬을 위해서는 Sort () 및 Usort () 와 같은 PHP 내장 정렬 기능을 고려할 수 있습니다.