配列ソートはプログラミングで非常に一般的なタスクであり、指定されたルールに従ってアレイ内の要素を再配置するのに役立ちます。 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;
}
}
次に、バブルソートアルゴリズムを使用して、PHPアレイを昇順で並べ替えます。
$arr = [5, 2, 8, 3, 1];
bubbleSort($arr);
ソートされた配列は次のとおりです。
[1, 2, 3, 5, 8]
この記事では、3つの一般的なPHPアレイソートアルゴリズムを紹介します:バブルソート、選択ソート、およびソートを挿入します。これらの並べ替え方法は簡単ですが、基本的なソートアルゴリズムのアイデアを習得するのに役立ちます。実際の開発では、特定のニーズに応じて適切な選別方法を選択できます。より効率的なソートをするには、 sort()やusort()などのphp内蔵ソート関数を考慮することができます。