首页 > 代码库 > PHP--冒泡、选择、插入排序法

PHP--冒泡、选择、插入排序法

    使用php来实现常用三种排序方法:

 1 <?php 2 /** 3  * Created by PhpStorm. 4  * User: xxx 5  * Date: 2016/10/12 6  * Time: 21:38 7  */ 8 // 冒泡排序法 9 function maopao_sort(&$arr){10     // 外循环 控制趟数 只需要count($arr)-1趟就可以完成排序11     for($i=0;$i<count($arr)-1;$i++){12         // 内循环控制每一趟,找出最大的那个数:ccount($arr)-1-$i13         for($j=0;$j<count($arr)-1-$i;$j++){14             if ($arr[$j] > $arr[$j+1]){15                 $temp = $arr[$j+1];16                 $arr[$j+1] = $arr[$j];17                 $arr[$j] = $temp;18             }19         }20     }21 }22 23 //选择排序法24 function SelectSort(&$arr){25     for($i=0;$i<count($arr)-1;$i++){26         // 假设的最小数27         $minVal = $arr[$i];28         //最小数的下标29         $minIndex = $i;30         for($j=$i+1;$j<count($arr);$j++){31             if ($minVal>$arr[$j]){32                 $minVal = $arr[$j];33                 $minIndex = $j;34             }35         }36         if ($i != $minIndex){37             $temp = $arr[$i];38             $arr[$i] = $minVal;39             $arr[$minIndex] = $temp;40         }41     }42 }43 44 // 插入排序法(小-->大)45 function InsertSort(&$arr){46     for ($i=1;$i<count($arr);$i++){47         // 带插入的值48         $insertVal = $arr[$i];49         // 要比较的位置下标50         $insertIndex = $i -1;51         while ($insertIndex>=0 && $insertVal<$arr[$insertIndex]){52             // 如果被比较数的下标大于等于0;插入的值比被比较的值小,则将被比较的值想后移53             $arr[$insertIndex+1] = $arr[$insertIndex];54             $insertIndex--;55         }56         // 插入insertVal57         if($insertIndex+1 != $i){58             $arr[$insertIndex+1] = $insertVal;59         }60     }61 }62 63 64 $arr = array(10,2,0,-23,90,-100,400);65 //maopao_sort($arr);66 //SelectSort($arr);67 InsertSort($arr);68 echo var_dump($arr)."<br>";69 print_r($arr);

 快速排序法:

 1 <?php 2 function quickSort(&$arr){ 3     if(count($arr)>1){ 4         $k=$arr[0]; 5         $x=array(); 6         $y=array(); 7         $_size=count($arr); 8         for($i=1;$i<$_size;$i++){ 9             if($arr[$i]<=$k){10                 $x[]=$arr[$i];11             }elseif($arr[$i]>$k){12                 $y[]=$arr[$i];13             }14         }15         $x=quickSort($x);16         $y=quickSort($y);17         return array_merge($x,array($k),$y);18     }else{19         return$arr;20     }21 }22 ?>

 

PHP--冒泡、选择、插入排序法