php冒泡排序与快速排序实例详解

时间:2021-05-26

本文实例分析了php冒泡排序与快速排序算法。分享给大家供大家参考,具体如下:

$a=array('3','8','1','4','11','7');print_r($a);$len = count($a);//从小到大for($i=1;$i<$len;$i++){for($j=$len-1;$j>=$i;$j--)if($a[$j]<$a[$j-1]){//如果是从大到小的话,只要在这里的判断改成if($b[$j]>$b[$j-1])就可以了 $x=$a[$j]; $a[$j]=$a[$j-1]; $a[$j-1]=$x;}}print_r($a);j//另一种方法 从小到大$b=array('4','3','8','9','2','1');$len=count($b);for($k=1;$k<$len;$k++){for($j=$len-1,$i=0;$i<$len-$k;$i++,$j--)if($b[$j]<$b[$j-1]){//如果是从大到小的话,只要在这里的判断改成if($b[$j]>$b[$j-1])就可以了 $tmp=$b[$j]; $b[$j]=$b[$j-1]; $b[$j-1]=$tmp;}print_r($b);echo "";}//下面的这个执行效率更高function maopao($arr){ $len = count($arr); for($i=1; $i<$len; $i++)//最多做n-1趟排序 { $flag = false; //本趟排序开始前,交换标志应为假 for($j=$len-1;$j>=$i;$j--) { if($arr[$j]<$arr[$j-1])//交换记录 {//如果是从大到小的话,只要在这里的判断改成if($arr[$j]>$arr[$j-1])就可以了 $x=$arr[$j]; $arr[$j]=$arr[$j-1]; $arr[$j-1]=$x; $flag = true;//发生了交换,故将交换标志置为真 } } if(! $flag)//本趟排序未发生交换,提前终止算法 return $arr; }}$shuz = array('2','4','1','8','5');$bb = maopao($shuz);print_r($bb);// 快速排序function kuaisu($arr){ $len = count($arr); if($len <= 1){ return $arr; } $key = $arr[0]; $left_arr = array(); $right_arr = array(); for($i=1; $i<$len;$i++){ if($arr[$i] <= $key){ $left_arr[] = $arr[$i]; }else{ $right_arr[] = $arr[$i]; } } $left_arr = kuaisu($left_arr); $right_arr = kuaisu($right_arr); return array_merge($left_arr, array($key), $right_arr);}$arr = array(23,98,54,2,9,62,34);print_r(kuaisu($arr));

希望本文所述对大家php程序设计有所帮助。

声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。

相关文章