1. バブルソート方法
手順: 最大の数を見つけて最後まで並べて、続けて検索します。
例:
コードをコピーします コードは次のとおりです。
$arr = array(3,5,-1,0,2);
for($i) =0;$ifor($j=0;$jif ($arr[$j ]>$arr[$j 1]){
$temp = $arr[$j];
$arr[$j]=$arr[$j 1]; 🎜>$arr[$ j 1]=$temp;
}
}
}
理解:
3, 5, -1, 0, 2
//最初の数値から逆方向の比較が開始され、次の数値より大きい場合は、次の数値で位置を調整します。
//最初は 3 が 5 未満であり、その後は変更されません
//2 回目は 5 が -1 より大きく、その後は
3, -1, 5, 0, 2
//3 回目は 5 が 0 より大きくなります
3, -1, 0, 5, 2
//4 回目、5 は 2 より大きい
3, -1, 0, 2, 5
これで内側のループが完了します。最後の数値はソートされ、次回は参加しません
3, -1, 0, 2 , 5 2 番目の外側ループが開始されます。 初回: 3 は -1 より大きい
-1, 3, 0, 2, 5
2 回目: 3 は 0 より大きい
-1, 0, 3, 2 , 5
3 回目: 3 は 2 より大きい
-1, 0, 2, 3, 5
これで次の 2 桁のソートが完了し、次に類推
-1, 0, 2 , 3, 5
2. 選択ソート方法
説明: まず、最初の数値が最小の数値であると仮定し、その後、次の数値をその数値と順番に比較します。想定された数値が最小の数値でない場合は、それを次の最小の数値と交換します
コードをコピーします コードは次のとおりです。
$arr=array (2,1,-1,3,0); $i=0;$i
$minval = $arr[$i] ;
$minindex = $i; 1 $i;$jif($arr[$j]$minval = $arr[$j]; $minindex = $j;
}
$temp = $arr[$i]
$arr [$i] = $arr[$minindex]; $minindex] = $temp;
}
理解:
2, 1, -1, 3, 0
//最初の数値 2 が最小値であると仮定します。 、次の数値が順に 2 と比較され、最小の数値が見つかります
プロセス:
1 が 2 より小さい場合、minval= 1
-1 が 1 より小さい場合、minval=-1 3 は -1 より大きく、変更されません
0 は -1 より大きく、変更されません
次に、配列内の最小の数値が -1 であることがわかりました
-1 と 2 の位置を次のように交換します最初の数値の並べ替えを完了します
その後、配列は
-1, 1, 2, 3, 0
になります。最初の数値 -1 はすでに順序付けられているため、比較には参加しません続行
次に、minval=1
2 が 1 より大きく、変更されていない
3 が 1 より大きく、変更されていない
0 が 1 より小さいと仮定します。すると、minval=0
が 1 になります。サイクルが完了し、0 と 1 の位置を交換して 2 番目の数値のソートを完了します
すると、配列は
-1, 0, 2, 3, 1
// 後続のプッシュ メソッドは次のようになります。上と同じです。 。 。
3. 挿入ソート方法
説明: まず、配列内の最初の数値が別個の順序配列であると仮定し、次の数値をそれと結合します。私はここで成長し、彼らになります] 比較して、次の数値が想定された数値より小さい場合は、小さい数値を後ろに移動し、最後にその数値を前に移動します
コードをコピー
コードは次のとおりです。
$arr=array(2,1,-1,3,0); for($ i=1;$i< count($arr);$i ){ $insertval=$arr[$i]; $insertindex = $i-1; while($insertindex>= 0 && $insertval$arr[$insertindex 1]=$arr[$insertindex]
}
$temp = $arr[$i]; 🎜>$arr[$insertindex 1]=$insertval;
}
理解:
2, 1, -1, 3, 0
//初めて、挿入する数値 1 を insertval として保存し、insertval と 2 を比較します。 1 は 2 より小さいため、2 を後ろに移動して次の図になります
2, 2, -1, 3 , 0
/ /このとき、2の前に数字はなく、insertindex=0なので比較が完了し、見つかった位置にinsertvalを挿入します。以下のようになります
1, 2, -1, 3, 0
//このとき、1, 2は順序付き配列になります
//2回目はまず挿入する数値を保存します-1 は insertval で、insertval と 2 を比較します。 -1 は 2 より小さいので、2 を後ろに移動して次の図になります
1, 2, 2, 3, 0
//このとき、比較しますinsertvalと2。1を比較し、-1が1より小さいので、-1を戻して次の図になります(挿入する数値と前の順序配列を比較する処理です)
1, 1 , 2, 3, 0
//この時点で、insertindexが終わっているので、この位置にinsertvalを挿入します
-1, 1, 2, 3, 0
//以下の方法です。上記のように