fork(1) download
  1. <?php
  2.  
  3. function generateArray($n) {
  4. $array = [];
  5. for ($i=0; $i<=$n; $i++) {
  6. $array[$i] = mt_rand(10,99);
  7. }
  8. return $array;
  9. }
  10.  
  11. function printArray($array) {
  12. echo implode($array, ", ") . ".\n";
  13. }
  14.  
  15.  
  16. function sortArrayBubble1($array) {
  17. for ($i=0; $i<count($array)-1; $i++) {
  18. for ($j=0; $j<count($array)-1; $j++) {
  19. if ($array[$j] > $array[$j+1]) {
  20. list($array[$j], $array[$j+1]) = [$array[$j+1], $array[$j]];
  21. }
  22. }
  23. }
  24. return $array;
  25. }
  26.  
  27. function sortArrayBubble2($array) {
  28. $sorted = FALSE;
  29. while ($sorted == FALSE) {
  30. $sorted = TRUE;
  31. for ($i=0; $i<count($array)-1; $i++) {
  32. if ($array[$i]>$array[$i+1]) {
  33. list($array[$i], $array[$i+1]) = [$array[$i+1], $array[$i]];
  34. $sorted = FALSE;
  35. }
  36. }
  37. }
  38. return $array;
  39. }
  40.  
  41. function sortArrayTricky($array) {
  42. $n = count($array);
  43. for ($i=0; $i<$n; $i++) {
  44. $newArray[$i] = min($array);
  45. unset($array[array_search(min($array), $array)]);
  46. }
  47. return $newArray;
  48. }
  49.  
  50. function sortArrayTrickyNoGay($array) {
  51. $n=count($array)-1;
  52. for ($i=0; $i<$n; $i++) {
  53. $minValue = $array[$i];
  54. for ($j=$i; $j<=$n; $j++) {
  55. if ($array[$j] < $minValue) {
  56. $minValue = $array[$j];
  57. $minKey = $j;
  58. }
  59.  
  60. }
  61. list($array[$i], $array[$minKey]) = [$array[$minKey], $array[$i]];
  62. }
  63. return $array;
  64. }
  65.  
  66. $a = generateArray(15);
  67.  
  68. echo "Сгенерированный массив: ";
  69. printArray($a);
  70.  
  71. $b = sortArrayBubble1($a);
  72. echo "Сортировка пузырьком: ";
  73. printArray($b);
  74.  
  75. $c = sortArrayBubble2($a);
  76. echo "пузырек 2.0: ";
  77. printArray($c);
  78.  
  79. $d = sortArrayTricky($a);
  80. echo "Хитрый способ: ";
  81. printArray($d);
  82.  
  83. $e = sortArrayTrickyNoGay($a);
  84. echo "Без зашкварного min(): ";
  85. printArray($e);
  86.  
Success #stdin #stdout 0.03s 20568KB
stdin
Standard input is empty
stdout
Сгенерированный массив: 97, 75, 55, 56, 59, 87, 85, 85, 71, 51, 88, 74, 92, 85, 21, 60.
Сортировка пузырьком:   21, 51, 55, 56, 59, 60, 71, 74, 75, 85, 85, 85, 87, 88, 92, 97.
пузырек 2.0:            21, 51, 55, 56, 59, 60, 71, 74, 75, 85, 85, 85, 87, 88, 92, 97.
Хитрый способ:          21, 51, 55, 56, 59, 60, 71, 74, 75, 85, 85, 85, 87, 88, 92, 97.
Без зашкварного min():  21, 51, 75, 55, 56, 59, 60, 71, 74, 85, 85, 85, 87, 92, 88, 97.