ホームページ  >  記事  >  バックエンド開発  >  PHP で配列ソートを実装する方法: クイック ソート、挿入ソート、マージ ソート アルゴリズム

PHP で配列ソートを実装する方法: クイック ソート、挿入ソート、マージ ソート アルゴリズム

不言
不言オリジナル
2018-07-19 14:20:421616ブラウズ

php で配列をソートするには多くの方法があり、各配列のソートには独自の異なる原則があります。クイック ソート アルゴリズム、マージ ソート アルゴリズム、挿入ソート アルゴリズムの例を詳しく見てみましょう。

特殊な形状の配列の走査

次の配列内の数値の平均を求めます:

$arr1 = array(
1, 2, array(31, 32, 33), 4,
array(51, 52, 53, array(541, 542, 543, 544) ),
6, array(71, 72, 73),
);
$count = 0; //计数
$sum = GetArraySum($arr1);
echo “\

クイック ソートアルゴリズム

原理の説明:

このような配列の場合: [5, 1,2, 6,7];

最初の項目を取り出し (そして使用します)それを中間配列として)、残りの項目を比較した後、それらは 2 つの配列に分割されます:

左の配列項目は中央の項目より小さく、右の配列項目は中央の項目より小さくありません。

左側の配列と右側の配列がすでに並べ替えられた配列である場合は、3 つをマージして最終結果を取得します。

左の配列と右の配列が並べ替えられた配列でない場合は、引き続きこの関数を再帰的に使用して、並べ替えられた配列を取得します。

概略図:

PHP で配列ソートを実装する方法: クイック ソート、挿入ソート、マージ ソート アルゴリズム

主要データ:

$arr1 = [5, 2, 1, 6,7]; / /原則を効果的に示すデータ 1

小: [2, 1]、大: [6, 7]、中: [5]

3 つの組み合わせ: [1 、2、5] , 6, 7];

$arr1 = [2, 1]; //原則を効果的に示すデータ 2

中央: [2]、左: [1] , []

特定のケース:

$arr1 = [5, 2, 4, 6, 1, 3];
$arr1 = [5, 2, 4, 6, 1, 3];
//$arr1 = [5, 3, 2, 8, 7];
echo “\

挿入ソート アルゴリズム

原則の説明:

このような配列の場合: [2 , 3, 4, 1];

ソートされた配列に特定の数値 n を挿入するには、

n の後に配列の項目を後ろから前に追加するだけです。比較では、 item が n より大きいことが判明した場合、

は item を 1 つ戻し、その後引き続き取り出して比較します。n より大きい場合は、1 つ戻します。以下同様です。 。

最終的にnより大きいものがなくなった場合は、後退時に空いた位置にnを入れます。

配列の場合、最初の項目は「すでにソートされた」配列と見なすことができ、

その後、2 番目の項目は上記の原則に従って「ソートされたものを挿入」できるため、前の 2 つの項目は

と並べ替えることができ、2 つの要素を含む「並べ替えられた配列」になります。これに続いて類推が続きます。

概略図:

PHP で配列ソートを実装する方法: クイック ソート、挿入ソート、マージ ソート アルゴリズム

原理データ:

$arr1 = [2, 3, 4, 1]; //詳しい説明原理のデータ 1

$arr1 = [2, 3, 1]; //原理を効果的に説明するデータ 2

$arr1 = [2, 1]; //原則を効果的に説明します Data 3

$arr1 = [1, 2]; //データ 3

原則を効果的に説明します:

$arr1 = [5, 2, 4, 6, 1, 3];
$arr1 = [2, 3, 4, 1];
$arr1 = [2, 4, 5, 6, 1, 3];
echo “\

マージ ソート アルゴリズム

原理の説明:

このような配列の場合: $arr1 = [1, 3, 5, 2, 4, 6]; それを 2 つに分割します: $a = [1 , 3, 5],
$b = [2, 4, 6];

ソートされた配列が 2 つある場合、2 つの配列に対して次の操作を実行すると、次の結果を得ることができます。 2 つの配列のソートされた「融合配列」:

配列 a の最初の項目 a1 を取り出し、次に配列 b の最初の項目 b1 を取り出し、a1 と b1 のサイズを比較します。

小さいもの (a1 とする) を新しい配列に入れ、対応する配列 a の最初の項目を削除します。

次に、対応する配列の最初の項目を取り出します (データだけではありません)。 )、その後、毎回 2 つの

のサイズを比較し続け、小さい方を新しい配列に入れ、次の「削除、取得、比較」を続けます。 。 。 。

最終結果として、新しい配列で新しい並べ替えられた配列を取得できます。

まだソートされていない配列の場合、再帰的に 2 つに分割されている限り、最終的には最短の配列 (1 つまたは 0 個のセルのみ) が得られます。この種の配列は自然にソートされます。注文。

回路図:

PHP で配列ソートを実装する方法: クイック ソート、挿入ソート、マージ ソート アルゴリズム

原理データ:

$arr1 = [1, 3, 5, 4, 6, 7, 8 ]; //原理を強く示すデータ 1

を真ん中から 2 つに分割 [ ]; [ 6, 7, 8]

[ 1, 3, 4, 5 , ]

$arr1 = [1, 3, 2, 4]; //原理を効果的に説明するデータ 2

デモケース:


#

$arr1 = [5, 2, 4, 6, 1, 3];
echo “\

関連する推奨事項:


php バブル ソート クイック ソート、php バブル ソート

php 配列ソート方法の共有 (バブル ソート、選択 並べ替え)

以上がPHP で配列ソートを実装する方法: クイック ソート、挿入ソート、マージ ソート アルゴリズムの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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