1.バブル選別方法
説明: 最大の数を見つけて最後まで並べて探し続けます
例:
$arr = 配列(3,5,-1,0,2);
for($i=0;$i
$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 番目の外側ループが始まります。 1 回目: 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);
for($i=0;$i
$minindex = $i;
for($j=1+$i;$j
$minindex = $j;
}
}
$temp = $arr[$i];
$arr[$i] = $arr[$minindex];
$arr[$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
$insertindex = $i-1;
While($insertindex>=0 && $insertval
$arr[$insertindex+1]=$arr[$insertindex];
$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と1を比較し、-1が1未満の場合は-1を戻して以下の図になります(挿入する数値と前の順序付けされた配列を比較する処理です)
1、1、2、3、0
//この時点で、insertindexが終わっているので、この位置にinsertvalを挿入します
-1、1、2、3、0
//以下のメソッドは上記の通りです
Bell のテクノロジー ブログからの抜粋