1. Normal bubble sort
<?php function Buddle_sort ($a) { $i =0; $j =0; $n = sizeof ($a); if ($n ==0) {return false; } else{for ($i =0; $i < $n; $i + +) {for ($j = $n-1; $j > $i; $j-) { if ($a [$j]> $a [$i]) { $m = $a [$i]; $a [$i]= $a [$j]; $a [$j]= $m; } }} return $a; } $l = Array (20,10,15,4,2,45,11), $R =buddle_sort ($l), foreach ($R as $value) echo $value, "_";? >
2. Improved bubble sorting
<?php function Buddle_sort ($a) { $i =0; $j =0; $n = sizeof ($a); if ($n ==0) {return false; } else{ $flag = true; for ($i = $n-1; $i >0 && $flag; $i-) {$flag = false; for ($j =0; $j < $i; $j + +) { if ($a [$j]> $a [$j +1]) { $m = $a [$j +1]; $a [$j +1]= $a [$j]; $a [$j]= $m; $flag = true; }}} return $a; } $l = Array (10,15,20,25,30,31,5), $R =buddle_sort ($l), foreach ($R as $value) echo $value, "_";? >
3. Select sort
<?php function Buddle_sort ($a) { $i =0; $j =0; $n = sizeof ($a); if ($n ==0) {return false; } else{for ($i = $n-1; $i >0; $i-) { $max = $i; for ($j =0; $j < $i; $j + +) { if ($a [$j]> $a [$max]) { $max = $j; } } if ($a [$max] > $a [$i]) { $m = $a [$i]; $a [$i]= $a [$max]; $a [$max] = $m; } } } return $a; } $l = Array (10,1,2,5,30,31,6), $R =buddle_sort ($l), foreach ($R as $value) echo $value, "_";? >
4. Insert Sort
<?phpfunction Simple_sort ($a) { $l = sizeof ($a); if (! $l) { return false; } for ($i =1; $i < $l; $i + +) { if ($a [$i]< $a [$i-1]) {for ($j = $i; $j >0; $j-) { if ($a [$j]< $a [$i]) {break ; } } $v = $a [$i]; for ($m = $i; $m > $j +1; $m-) { $a [$m]= $a [$m-1]; } $a [$j +1] = $v; }} return $a;} $s =array (2,13,5,12,6,67,54,12), $R =simple_sort ($s); foreach ($R as $value) {echo $value, "_";}
5.1, Waste space
<?phpfunction QuickSort ($arr) { if (count ($arr) >1) { $k = $arr [0]; $x =array (); $y =array (); $_size=count ($arr); for ($i =1; $i <$_size; $i + +) { if ($arr [$i]<= $k) { $x []= $arr [$i]; } ElseIf ($arr [$i]> $k) { $y []= $arr [$i]; } } $x =quicksort ($x); $y =quicksort ($y); Return Array_merge ($x, Array ($k), $y); } else{ return $arr; }} $a =array (2,1,2,4,12,5,6,8); $r = QuickSort ($a); Var_dump ($R); >
6. Fast row 2, recommended, in an array to implement.
<?php$a = Array (2, 1, 5, 3, 6, 4, 8, 9, 1), function partition (& $a, $low, $high) { $pivot = $a [$low]; while ($low < $high) { while ($low < $high && $a [$high] >= $pivot) { $high--; } $a [$low] = $a [$high]; while ($low < $high && $a [$low] <= $pivot) { $low + +; } $a [$high] = $a [$low]; } $a [$low] = $pivot; return $low;} Function qs (& $a, $low, $high) { if ($low < $high) { $p = partition ($a, $low, $high); QS ($a, $low, $p-1); QS ($a, $p +1, $high); }} QS ($a, 0, 8); Var_dump ($a);
Several commonly used sorting methods (PHP implementation)