ホームページ >バックエンド開発 >PHPチュートリアル >PHP で挿入ソートを実装する方法を例とともに学びます

PHP で挿入ソートを実装する方法を例とともに学びます

WBOY
WBOYオリジナル
2016-07-25 08:51:20814ブラウズ
  1. /**

  2. * 挿入ソート
  3. * @param 配列 $a 順序なしセット
  4. * @return 配列順序付きセット
  5. */
  6. function insertSort($a) {
  7. $temp;
  8. $i;
  9. $j;
  10. $size_a = count($ a);
  11. #2番目の要素から開始
  12. for ($i = 1; $i < $size_a; $i++) {
  13. if ($a[$i] < $a[$i-1]) {
  14. $j = $i; # 現在の要素の位置を保存します
  15. $temp = $a[$i]; # 現在の要素の値
  16. # それより小さい要素が見つかった場合は、左側の要素を比較します、要素を右に移動します。そうでない場合は、要素を現在の位置に挿入します
  17. while($j>0 && $temp<$a[$j-1]) {
  18. $a[$j] = $a[$j -1];
  19. $j-- ;
  20. }

  21. # 要素を挿入

  22. $a[$j] = $temp;
  23. }
  24. }
  25. return $a;
  26. }
  27. /* *
  28. * 乱数を取得します
  29. * @param Integer $size 数量
  30. * @return Integer
  31. */
  32. function randomNumber ($size = 10) {
  33. $rand = array();
  34. srand(time(NULL));
  35. for ($i = 0; $i array_push($rand, mt_rand (0,1000));
  36. }
  37. return $rand;
  38. }
  39. $a = randomNumber();
  40. echo sprintf("未分類のリスト %sn", implode(" ", $a));
  41. echo sprintf( "ソートされたリスト %sn", implode(" ", insertSort($a)));

コードをコピー

php ソート実装コードを挿入

挿入ソート: ソート済みのソート済みデータにデータの一部を挿入し、数値に 1 を加えた新しいソート済みデータを取得します。

アルゴリズムの説明: ⒈ 最初の要素から始めて、要素はソートされているとみなすことができます ⒉ 次の要素を取り出し、ソートされた要素シーケンスを後ろから前にスキャンします。 ⒊ 要素(ソート済み)が新しい要素より大きい場合、要素を次の位置に移動します ⒋ 並べ替えられた要素が新しい要素以下になる位置が見つかるまで、手順 3 を繰り返します。 ⒌ 新しい要素を次の位置に挿入します ⒍ ステップ 2 を繰り返します

例:

  1. $arr =array(123,0,5,-1,4,15);
  2. function insertSort(&$arr){
  3. //デフォルトの最初の A下付き文字が0の数字は整理された数字です
  4. for($i=1;$i//挿入と比較のための数字を決定します
  5. $insertVal=$arr[$ i ];
  6. //前に比較した数値を確認して比較します
  7. $insertIndex=$i-1;

  8. //位置が見つからないことを示します

  9. while($insertIndex>=0 && $insertVal< $arr[$insertIndex]){
  10. //数値を後ろに移動
  11. $arr[$insertIndex+1]=$arr[$insertIndex];
  12. $insertIndex--;
  13. }
  14. //挿入 ( $insertval の位置 )
  15. $arr[$insertIndex+1] = $insertVal;
  16. }
  17. }
  18. insertSort($arr);
  19. print_r($arr);
  20. ?>

コードをコピー


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