您的位置:首页 > 其它

排序算法__快速排序

2017-02-22 01:28 204 查看
<?php

$arr=array(1,43,54,62,21,66,32,78,36,76,39);

function quickSort($arr) {
//先判断是否需要继续进行
$length = count($arr);
if($length <= 1) {
return $arr;
}

//如果没有返回,说明数组内的元素个数 多余1个,需要排序
//选择一个标尺
//选择第一个元素
$base_num = $arr[0];

//遍历 除了标尺外的所有元素,按照大小关系放入两个数组内
//初始化两个数组
$left_array = array();//小于标尺的
$right_array = array();//大于标尺的

for($i=1; $i<$length; $i++) {
if($base_num > $arr[$i]) {
//放入左边数组
$left_array[] = $arr[$i];
} else {
//放入右边
$right_array[] = $arr[$i];
}
}

//再分别对 左边 和 右边的数组进行相同的排序处理方式
//递归调用这个函数,并记录结果
$left_array = quickSort($left_array);
$right_array = quickSort($right_array);

//合并左边 标尺 右边
return array_merge($left_array, array($base_num), $right_array);
}

$arr = quickSort($arr);

echo "<pre>";
print_r($arr);

/*
Array
(
[0] => 1
[1] => 21
[2] => 32
[3] => 36
[4] => 39
[5] => 43
[6] => 54
[7] => 62
[8] => 66
[9] => 76
[10] => 78
)
*/


View Code
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: