您的位置:首页 > 其它

基本排序

2016-02-20 00:00 176 查看
冒泡排序
$a=array('3','8','1','4','11','7');

$len = count($a);

for($i=1;$i<$len;$i++){
for($j=$len-1;$j>=$i;$j--){
if($a[$j]<$a[$j-1])
{//如果是从大到小的话,只要在这里的判断改成if($a[$j]>$a[$j-1])就可以了
$x=$a[$j];
$a[$j]=$a[$j-1];
$a[$j-1]=$x;
}
}
}
print_r($a);

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));
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: