快速排序法 php,php实现快速排序法函数代码

取一个值与其他值进行比较,小的放在这个值的左边,大的放在这个值的右边,然后按照这个方式递归

代码1:

复制代码 代码如下:

function quicksort($str){

if(count($str)<=1) return $str;//如果个数不大于一,直接返回

$key=$str[0];//取一个值,稍后用来比较;

$left_arr=array();

$right_arr=array();

for($i=1;$i

if($str[$i]<=$key)

$left_arr[]=$str[$i];

else

$right_arr[]=$str[$i];

}

$left_arr=quicksort($left_arr);//进行递归;

$right_arr=quicksort($right_arr);

return array_merge($left_arr,array($key),$right_arr);//将左中右的值合并成一个数组;

}//以下是测试

$str=array(5,3,8,2,5,9,7,2,1,4,0);

print_r(quicksort($str));

?>

代码2:

复制代码 代码如下:

/* @快速排序法*/

function quickSort($left,$right,$arr){

$l = $left;

$r = $right;

$pivot = $arr[($left+$right)/2];

$temp = 0;

while($l

while($arr[$l]

$l++;

}

while($arr[$r]>$pivot){

$r–;

}

if($l>=$r) break;

$temp = $arr[$l];

$arr[$l] = $arr[$r];

$arr[$r] = $temp;

if($arr[$l]==$pivot) –$r;

if($arr[$r]==$pivot) ++$l;

}

if($l==$r){

$l++;

$r–;

}

if($left

quickSort($left, $r, $arr);

}elseif($right>$l){

quickSort($l, $right, $arr);

}else{

return $arr;

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值