-
-
/** - * 挿入ソート
- * @param 配列 $a 順序なしセット
- * @return 配列順序付きセット
- */
- function insertSort($a) {
- $temp;
- $i;
- $j;
- $size_a = count($ a);
- #2番目の要素から開始
- for ($i = 1; $i < $size_a; $i++) {
- if ($a[$i] < $a[$i-1]) {
- $j = $i; # 現在の要素の位置を保存します
- $temp = $a[$i]; # 現在の要素の値
-
- # それより小さい要素が見つかった場合は、左側の要素を比較します、要素を右に移動します。そうでない場合は、要素を現在の位置に挿入します
- while($j>0 && $temp<$a[$j-1]) {
- $a[$j] = $a[$j -1];
- $j-- ;
- }
# 要素を挿入
- $a[$j] = $temp;
- }
- }
- return $a;
- }
- /* *
- * 乱数を取得します
- * @param Integer $size 数量
- * @return Integer
- */
- function randomNumber ($size = 10) {
- $rand = array();
- srand(time(NULL));
- for ($i = 0; $i array_push($rand, mt_rand (0,1000));
- }
- return $rand;
- }
-
- $a = randomNumber();
- echo sprintf("未分類のリスト %sn", implode(" ", $a));
- echo sprintf( "ソートされたリスト %sn", implode(" ", insertSort($a)));
-
コードをコピー
php ソート実装コードを挿入
挿入ソート:
ソート済みのソート済みデータにデータの一部を挿入し、数値に 1 を加えた新しいソート済みデータを取得します。
アルゴリズムの説明:
⒈ 最初の要素から始めて、要素はソートされているとみなすことができます
⒉ 次の要素を取り出し、ソートされた要素シーケンスを後ろから前にスキャンします。
⒊ 要素(ソート済み)が新しい要素より大きい場合、要素を次の位置に移動します
⒋ 並べ替えられた要素が新しい要素以下になる位置が見つかるまで、手順 3 を繰り返します。
⒌ 新しい要素を次の位置に挿入します
⒍ ステップ 2 を繰り返します
例:
-
-
- $arr =array(123,0,5,-1,4,15);
- function insertSort(&$arr){
- //デフォルトの最初の A下付き文字が0の数字は整理された数字です
- for($i=1;$i//挿入と比較のための数字を決定します
- $insertVal=$arr[$ i ];
- //前に比較した数値を確認して比較します
- $insertIndex=$i-1;
//位置が見つからないことを示します
- while($insertIndex>=0 && $insertVal< $arr[$insertIndex]){
- //数値を後ろに移動
- $arr[$insertIndex+1]=$arr[$insertIndex];
- $insertIndex--;
- }
- //挿入 ( $insertval の位置 )
- $arr[$insertIndex+1] = $insertVal;
- }
- }
- insertSort($arr);
- print_r($arr);
- ?>
コードをコピー
|