插入排序,由第二位开始,一个个往前适当的位置(比左边大,比右边小)插入
1 <?php 2 3 $ary = array(39, 432, 5, 37, 43, 100, 32, 12); 4 5 for ($i = 1; $i < count($ary); $i++) { 6 7 $j = $i; 8 9 while ($j > 0 && $ary[$j - 1] > $ary[$j]) { 10 11 $tmp = $ary[$j]; 12 $ary[$j] = $ary[$j - 1]; 13 $ary[$j - 1] = $tmp; 14 $j--; 15 } 16 17 } 18 for ($i = 0; $i < count($ary); $i++) { 19 echo $ary[$i] . "<br/>"; 20 } 21 ?>
冒泡排序,从最尾开始,和前一个比较,将小的移前,最后得出最小的放在第一位.
重复一次,将次小的放在第二位...
最终得出结果
1 <?php 2 3 $ary = array(39, 432, 5, 37, 43, 100, 32, 12); 4 5 for ($i = 0; $i < count($ary); $i++) { 6 7 $j = count($ary) - 1; 8 9 while ($j > $i) { 10 if ($ary[$j - 1] > $ary[$j]) { 11 $tmp = $ary[$j]; 12 $ary[$j] = $ary[$j - 1]; 13 $ary[$j - 1] = $tmp; 14 } 15 $j--; 16 } 17 18 } 19 for ($i = 0; $i < count($ary); $i++) { 20 echo $ary[$i] . "<br/>"; 21 } 22 ?>
选择排序,由左边起第一个起,找出最小的和第一个交换位置,再从第二个起,找出最小的和第二个交换位置,重复可得结果
1 <?php 2 3 $ary = array(39, 432, 5, 37, 43, 100, 32, 12); 4 5 for ( $i = 0; $i < count($ary) - 1; $i++) 6 { 7 $j = $i; 8 $minpos = $i; 9 $first = $ary[$i]; 10 while ($j < count($ary) - 1) 11 { 12 if ($ary[$minpos] > $ary[$j + 1]) 13 { 14 $minpos = $j + 1; 15 } 16 $j++; 17 } 18 $ary[$i] = $ary[$minpos]; 19 $ary[$minpos] = $first; 20 } 21 22 for ($i = 0; $i < count($ary); $i++) { 23 echo $ary[$i] . "<br/>"; 24 } 25 ?>