-
ループを使用した実装:
function insertionSort($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; } return $arr; } $numbers = [4, 2, 7, 1, 3]; $sortedNumbers = insertionSort($numbers); print_r($sortedNumbers);
-
再帰を使用した実装:
function recursiveInsertionSort($arr, $n) { if ($n <= 1) { return $arr; } recursiveInsertionSort($arr, $n - 1); $last = $arr[$n - 1]; $j = $n - 2; while ($j >= 0 && $arr[$j] > $last) { $arr[$j + 1] = $arr[$j]; $j--; } $arr[$j + 1] = $last; return $arr; } $numbers = [4, 2, 7, 1, 3]; $sortedNumbers = recursiveInsertionSort($numbers, count($numbers)); print_r($sortedNumbers);
これらのコード例では、与えられた数値配列を挿入ソートによって昇順に並び替えます。返されるソート済みの配列をprint_r
関数を使用して出力しています。
挿入ソートは一般的にデータの量が小さい場合に効果的ですが、大量のデータに対しては効率が低下する傾向があります。より大規模なデータセットに対しては、他の効率的なソートアルゴリズムを検討することをおすすめします。
このブログ投稿では、PHPでの挿入ソートの実装方法とその効率について説明しました。