ホームページ > バックエンド開発 > PHPチュートリアル > PHPにおける挿入ソート法の原理と応用

PHPにおける挿入ソート法の原理と応用

墨辰丷
リリース: 2023-03-31 22:00:02
オリジナル
1840 人が閲覧しました

この記事では、主に配列ソートを実現するための PHP 挿入ソート方法を紹介します。挿入ソート方法の原理と具体的な実装テクニックを例とともに説明します。必要な方はこの記事を参照してください。

# この例では、PHP 挿入ソートを使用して配列ソートを実装する方法を説明します。

具体的な分析は次のとおりです:

挿入ソート法の基本的な考え方: 事例も使用して説明しますが、引き続き $arr = array(2,6,3,9) を使用します。 )、大きいものから小さいものへ並べ替えます。

実装原則: 順序付けされた配列 $arr = array(2) があると仮定します (実際には作成されていません)。$arr[1]=6 を使用して、6>2 の場合、$arr によってそれと比較します。 [0] は $arr[1] の位置に戻され、$arr[0] の位置に 6 が挿入されます。次に、$arr[2]=3 と $arr[1]=2, 3>2 が比較され、$arr[1]=2 は引き続き $arr[2] の位置、つまり元の $arr[3] に移動します。 ]=3 $arr[1] の位置に挿入し、引き続き終了位置に 9 を挿入します。最終結果は (9,6,3,2) です。並べ替えは、count($arr)-1 の大きなループの後にも実行できます。

コード パターン分析:

最初の大きなループ: $[1] と $[0] の比率

2 番目の大きなループ: $[2] と $[1 ] の比率、$[1] と $[0] の比率;
3 番目の大きなサイクル: $[3] と $[2] の比率、$[2] と $[1] の比率、$[1] と $[0 ] Ratio;

PHP コードは、関数のカプセル化を使用して、

<?php
function insertSort(&$arr){
 for($i=1;$i<count($arr);$i++){
 //$insertVal是准备插入的数
 for($j=$i;$j>0;$j--){
  if($arr[$j]>$arr[$j-1]){
  $insertVal = $arr[$j];
  $arr[$j] = $arr[$j-1];
  $arr[$j-1] = $insertVal;
  }
 }
 }
}
$myarr = array(2,6,3,9);
insertSort($myarr);
echo "<pre class="brush:php;toolbar:false">";
print_r($myarr);
?>
ログイン後にコピー

code:

First big Loop:

$i=1 Array (2 ,6,3,9)

$j=1 6 と 2 の比率を実行します: $arr[1]=2;$arr[0]=6, get (6,2 ,3,9)

2 番目の大きなループ:

$i=2 Array (6,2,3,9)

$j=2 3 と 2 の実行比率: $arr[2]=2 になります, $arr[1]=3, get (6,3,2,9)
$j--,$j=1 $arr[1] と $arr[0] を実行 比率: 条件が成立しません

3 番目の大きなループ:

$i=3 Array (6,3,2,9)

$j=3 9 と 2 の比率を実行します。 $arr[ になります。 3]=2,$arr[2]=9, get (6,3,9,2)
$j--,$j=2 9 と 3 の比率を実行すると $ arr[2]= になります3,$arr[1]=9, get (6,9,3,2)
$j--,$j=1 9と6の比率を実行すると、$arr[1] =5,$になりますarr[0]=9, get (9,6,3,2)

概要: 上記がこの記事の全内容です。皆様のヘルプの学習に役立つことを願っています。

関連する推奨事項:

php 操作フォーム経由でメールを送信する方法

##php は検証フォームを使用してフィールドが空かどうかを検出します

phpで各段落にスペースを追加する方法

以上がPHPにおける挿入ソート法の原理と応用の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート