php 快速排序
快速排序是以其中一个数为比较标准,其他比较的数分块处理,应用递归按相同想法处理数据
比如:4 3 6 2 1 7 8
以4为比较对象 排序为 3 2 1 4 6 7 8
左边为 3 2 1 右边 为 6 7 8
左右两边再次分块排序 分别为 2 1 3 和 6 7 8 然后 2 1 和 7 8 再次排序
//快速排序 $arr_test = array(4,2,9,3,6,7,1,5,4,5,'a','d','c','b','A','B','D','C','a'); function fastSort($sortarr){ if(count($sortarr) <= 1) { return $sortarr; } $start = $sortarr[0]; $middle = array(); $left = array(); $right = array(); foreach($sortarr as $key => $val){ if(ord($val) > ord($start)) { array_push($right,$val); } elseif(ord($val) < ord($start)) { array_push($left,$val); } else { array_push($middle,$val); } } $left = fastSort($left); $right = fastSort($right); return array_merge($left,$middle,$right); } $aaa = fastSort($arr_test); var_dump($aaa);