PHP Hill (Shell) ソート アルゴリズムの実装 (コードの詳細説明)

藏色散人
リリース: 2023-04-05 14:18:02
オリジナル
3728 人が閲覧しました

Hill (Shell) 並べ替えまたはシェル メソッドは、インプレース比較並べ替えです。これは、バブル ソート または 挿入ソート の一般化として見ることができます。この方法では、まず互いに離れた要素のペアを並べ替え、その後、比較する要素間の間隔を徐々に詰めていきます。遠く離れた要素から開始すると、隣接要素を交換するよりも速く、場違いの要素を移動できます。

PHP Hill (Shell) ソート アルゴリズムの実装 (コードの詳細説明)

シェルのソート例は次のとおりです。

PHP Hill (Shell) ソート アルゴリズムの実装 (コードの詳細説明)

最初のトラバーサルは「5 ソート」です。 " 、異なる部分配列 (a1、a6、a11)、(a2、a7、a12)、(a3、a8)、(a4、a9)、(a5、a10) に対して挿入ソートを実行します。たとえば、部分配列 (a1、a6、a11) を (62,17,25) から (17,25,62) に変更します。

次に、「3 ソート」では、部分配列 (a1、a4、a7、a10)、(a2、a5、a8、a11)、(a3、a6、a9、a12) に対して挿入ソートを実行します。

最後は配列全体(a1,...,a12)の「1ソート」です。例に示すように、シェル ソート操作のサブ配列は最初は非常に短く、後で長くなりますが、基本的に順序付けされています。どちらの場合でも、挿入ソートは機能します。 ヒル (シェル) ソートは 不安定です。値が等しい要素の相対的な順序が変更される可能性があります。これは、入力が部分的にソートされている場合に高速に実行される適応型ソート アルゴリズムです。

ヒル (シェル) ソートのグラフィックは次のとおりです:

PHP Hill (Shell) ソート アルゴリズムの実装 (コードの詳細説明)

ヒル (シェル) ソート アルゴリズムを実装する PHP のコード例:

<?php
function shell_Sort($my_array)
{
    $x = round(count($my_array)/2);
    while($x > 0)
    {
        for($i = $x; $i < count($my_array);$i++){
            $temp = $my_array[$i];
            $j = $i;
            while($j >= $x && $my_array[$j-$x] > $temp)
            {
                $my_array[$j] = $my_array[$j - $x];
                $j -= $x;
            }
            $my_array[$j] = $temp;
        }
        $x = round($x/2.2);
    }
    return $my_array;
}

$test_array = array(3, 0, 2, 5, -1, 4, 1);
echo "原始数组 :\n";
echo implode(&#39;, &#39;,$test_array );
echo "\n排序后数组\n:";
echo implode(&#39;, &#39;,shell_Sort($test_array)). PHP_EOL;
ログイン後にコピー

出力:

原始数组 : 3, 0, 2, 5, -1, 4, 1 
排序后数组 :-1, 0, 1, 2, 3, 4, 5
ログイン後にコピー

この記事は、PHP Hill (Shell) ソート アルゴリズムの紹介です。シンプルで理解しやすいです。困っている友人に役立つことを願っています。 !

以上がPHP Hill (Shell) ソート アルゴリズムの実装 (コードの詳細説明)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!