快速排序也是基础排序之一,是每个程序员应该掌握的算法。
public function run($args) { @set_time_limit(0); @ini_set('memory_limit', '2048M'); $obj_arr = array(5,4,2,3,6,2,3,7,1,5,6,8,9,4,3,13,22,42,14,15); $obj_arr = $this->sortArr($obj_arr); var_export($obj_arr); } public function sortArr($arr){ $right_arr = array(); $left_arr = array(); $length = count($arr); if($length <= 1){//只有一个元素的时候终止 return $arr; } $pareNum = $arr[0]; for($i=1;$i<$length;$i++){//从1开始,第一个元素已经有序了 if($arr[$i] > $pareNum){ $right_arr[] = $arr[$i]; }else{ $left_arr[] = $arr[$i]; } } $left_arr = $this->sortArr($left_arr); $right_arr = $this->sortArr($right_arr); return array_merge($left_arr,array($pareNum),$right_arr);//把中间元素加上 }
输出:
array (
0 => 1,
1 => 2,
2 => 2,
3 => 3,
4 => 3,
5 => 3,
6 => 4,
7 => 4,
8 => 5,
9 => 5,
10 => 6,
11 => 6,
12 => 7,
13 => 8,
14 => 9,
15 => 13,
16 => 14,
17 => 15,
18 => 22,
19 => 42,
)