首页 > 代码库 > PHP排序算法

PHP排序算法

插入排序,由第二位开始,一个个往前适当的位置(比左边大,比右边小)插入

 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 ?>