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 ?>
原文地址:https://www.cnblogs.com/jimzbom/p/3861430.html