A5下载文章资讯

分类分类

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

2015-12-07 15:48作者:fang

本文实例分析了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程序设计有所帮助。

展开全部

相关

说两句网友评论
    我要跟贴
    取消