ホームページ  >  記事  >  バックエンド開発  >  PHP はマージソートアルゴリズムを実装します (コード例)

PHP はマージソートアルゴリズムを実装します (コード例)

藏色散人
藏色散人オリジナル
2019-03-14 09:37:543720ブラウズ

マージ ソート (マージ ソートとも呼ばれる) は、O (n log n) 比較に基づく並べ替えアルゴリズムです。ほとんどの実装は安定した並べ替えを生成します。これは、実装が並べ替えられた出力内の等しい要素の入力順序を保持することを意味します。

PHP はマージソートアルゴリズムを実装します (コード例)

次に、PHP を使用してマージ ソート アルゴリズムを実装する方法を紹介します

PHP コード例は次のとおりです:

<?php
function merge_sort($my_array){
    if(count($my_array) == 1 ) return $my_array;
    $mid = count($my_array) / 2;
    $left = array_slice($my_array, 0, $mid);
    $right = array_slice($my_array, $mid);
    $left = merge_sort($left);
    $right = merge_sort($right);
    return merge($left, $right);
}
function merge($left, $right){
    $res = array();
    while (count($left) > 0 && count($right) > 0){
        if($left[0] > $right[0]){
            $res[] = $right[0];
            $right = array_slice($right , 1);
        }else{
            $res[] = $left[0];
            $left = array_slice($left, 1);
        }
    }
    while (count($left) > 0){
        $res[] = $left[0];
        $left = array_slice($left, 1);
    }
    while (count($right) > 0){
        $res[] = $right[0];
        $right = array_slice($right, 1);
    }
    return $res;
}
$test_array = array(100, 54, 7, 2, 5, 4, 1);
echo "原始数组 : ";
echo implode(&#39;, &#39;,$test_array );
echo "\n排序后数组:";
echo implode(&#39;, &#39;,merge_sort($test_array))."\n";

出力:

原始数组 : 100, 54, 7, 2, 5, 4, 1 
排序后数组:1, 2, 4, 5, 7, 54, 100

関連関数の紹介:

array_slice() の関数array 条件に基づいて値を取得し、それを返します。

array_slice ( array $array , int $offset [, int $length = NULL [, bool $preserve_keys = FALSE ]] ) : array

array_slice() は、offset パラメータと length パラメータで指定された配列 array 内のシーケンスを返します。

implode()この関数は、1 次元配列の値を文字列に変換します。

関連する推奨事項: "PHP チュートリアル "

この記事は、PHP でマージ ソート アルゴリズムを実装する方法の紹介です。友人の役に立てば幸いです。必要としている!

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

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。