第七星尘

PHP实现的快速排序

通俗地描述快速排序就是:
先选定一个元素(一般是数组的第一个元素)作为基准,把数组中其它小于基准元素的元素都放到左边,大于基准元素的元素都放到右边。左边形成一个子数组,右边也是一个子数组。先后对这两个子数组进行同样的操作。当数组分割到只剩下一个元素的时候,便返回只有一个元素的数组。最后,把左右子数组连起来。当然,基准元素放在左右子数组之间,最后组成一个大数组。
<?php
function quickSort($ary){
$len = count($ary);
if($len <= 1)return $ary;//如果元素只有一个,则直接返回
$left_ary = array();
$right_ary = array();
$key = $ary[0];
for($i= 1; $i <$len ; $i++){
if($ary[$i] <= $key)$left_ary[] = $ary[$i];
else $right_ary[] = $ary[$i];
}
$left_ary = quickSort($left_ary);//递归调用函数本身
$right_ary = quickSort($right_ary);
$new_ary = array_merge($left_ary , array($key) , $right_ary);
return $new_ary;
}

//测试例子
$ary = array(23 ,4 , 12, 34 ,75 ,29 );
var_dump( quickSort($ary));

//输出是——
/*
array(6) {
[0]=>
int(4)
[1]=>
int(12)
[2]=>
int(23)
[3]=>
int(29)
[4]=>
int(34)
[5]=>
int(75)
}
*/
?>
 如无特殊说明,本站皆为原创。转载请注明来自第七星尘的技术博客《PHP实现的快速排序》

评论

  1. 361电影网 #1

    挺好用的,谢谢分享

    回复
    2013-01-25