首页 > 代码库 > 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--冒泡、选择、插入排序法
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。