ホームページ > バックエンド開発 > PHPチュートリアル > PHP でのさまざまなソート アルゴリズムの実装の概要

PHP でのさまざまなソート アルゴリズムの実装の概要

WBOY
リリース: 2016-07-25 08:55:46
オリジナル
902 人が閲覧しました
  1. // バブルソート

  2. function BubbleSort($arr) {
  3. // 配列の全長を取得
  4. $num = count($arr);
  5. //配列を順方向に走査します
  6. for ($i = 1; $i < $num; $i++) {
  7. // 逆方向に走査
  8. for ($j = $num - 1; $j >= $i ; $j- - ) {
  9. // 隣接する 2 つの数値を比較
  10. if ($arr[$j] < $arr[$j-1]) {
  11. // 小さい方の数値を一時的に保存
  12. $iTemp = $arr[$j -1 ];
  13. // 大きいものを前に置きます
  14. $arr[$j-1] = $arr[$j];
  15. // 小さいものを後ろに置きます
  16. $arr[$j] = $iTemp;
  17. }
  18. }
  19. }
  20. return $arr;
  21. }

  22. // 並べ替え関数を交換

  23. function ExchangeSort($arr){
  24. $num = count($arr);
  25. // 配列を走査します
  26. for ($i = 0;$i < $num - 1; $i++) {
  27. // 現在のインデックスの次のインデックスを取得します
  28. for ($j = $i + 1; $j < $num; $ j++) {
  29. // 隣接する2つの値を比較
  30. if ($arr[$j] < $arr[$i]) {
  31. // 小さい方の数値を一時的に保存
  32. $iTemp = $arr[$ i];
  33. // 大きいものを前に置きます
  34. $arr[$i] = $arr[$j];
  35. // 小さいものを後ろに置きます
  36. $arr[$j] = $iTemp;
  37. }
  38. }
  39. } // bbs.it-home.org
  40. return $arr;
  41. }

  42. // 選択範囲のソート

  43. function SelectSort($arr) {
  44. // の全長を取得配列
  45. $ num = count($arr);
  46. // 配列
  47. を走査 for ($i = 0;$i < $num-1; $i++) {
  48. // 現在の値を一時的に保存します
  49. $iTemp = $arr[$i ];
  50. // 現在位置を一時的に保存
  51. $iPos = $i;
  52. // 現在位置以降のデータを走査
  53. for ($j = $i + 1;$j // 現在の値より小さい値がある場合
  54. if ($arr[$j] < $iTemp) {
  55. // 一時的な最小値
  56. $iTemp = $arr[$j];
  57. // 一時的な位置
  58. $iPos = $ j;
  59. }
  60. }
  61. // 現在の値を計算された位置に代入します
  62. $arr[$iPos] = $arr[$i];
  63. // 現在の値を計算値
  64. $arr[$ i] = $iTemp;
  65. }
  66. return $arr;
  67. }

    gt;
  68. // 挿入ソート

  69. function InsertSort($arr){
  70. $num = count( $arr);
  71. // 配列を走査します
  72. for ($i = 1;$i < $num; $i++) {
  73. // 現在の値を取得します
  74. $iTemp = $arr[$i];
  75. //現在値の前の位置を取得します
  76. $iPos = $i - 1;
  77. // 現在値が前の値より小さい場合は、配列の先頭に達していません
  78. while (($iPos >= 0 ) && ($iTemp < $arr[$iPos])) {
  79. // 前の値を 1 桁戻します
  80. $arr[$iPos + 1] = $arr[$iPos];
  81. // 位置をデクリメントします
  82. $iPos--;
  83. }
  84. $arr[$iPos+ 1] = $iTemp;
  85. }
  86. return $arr;
  87. }

  88. // クイックソート

  89. 関数 QuickSort($arr){
  90. $num = count($arr);
  91. $l = $r = 0;
  92. // 2 番目のインデックス
  93. から始めて配列を走査します for ($i = 1;$i < $num; $i++) {
  94. // 値がインデックス 1 より小さい場合
  95. if ($arr [$i] < $arr[0]) {
  96. // 左のインデックス配列 (インデックス 1 より小さいデータ) をロードします
  97. $left[] = $ arr[$i];
  98. $l++;
  99. } else { / /bbs.it-home.org
  100. // それ以外の場合は、正しいインデックス (インデックス 1 より大きいデータ) にロードします
  101. $right[] = $arr[$ i];
  102. $r++; //
  103. }
  104. }
  105. // 左のインデックスに値がある場合、左のインデックスをソートします
  106. if($l > 1) {
  107. $left = QuickSort($left);
  108. }
  109. // ソートされた配列
  110. $new_arr = $left;
  111. // 現在の配列が最初に最後に配置されます
  112. $new_arr[] = $arr[0];
  113. // インデックスに値がある場合は右にソートしますIndex
  114. if ($r > 1) {
  115. $right = QuickSort($ right);
  116. }
  117. // 右のインデックスの長さに応じてデータを再度追加します
  118. for($i = 0;$i < $ r; $i++) {
  119. $new_arr[] = $right[$i];
  120. }
  121. return $new_arr;
  122. }
  123. ?

コードをコピー


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