標籤:style blog color os strong for
插入排序,由第二位開始,一個個往前適當的位置(比左邊大,比右邊小)插入
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 ?>