快速排序算法:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行
关键点 : 递归,折半 通常取第一个数为对比
时间复杂度 平均 log2(n)*n
function sort_half($a){ if(count($a)>1){ $half = $a[0]; $left = array(); $right = array(); for($i = 1 ; $i < count($a) ; $i++){ if($a[$i] < $half){ $left[] = $a[$i]; }else{ $right[] = $a[$i]; } } $right = sort_half($right); $left = sort_half($left); return array_merge($left,array($half),$right); }else{ return $a; } } $a = array(3,8,2,5,7,1,6,4); $b = sort_half($a); print_r($b);
时间: 2024-11-05 17:24:04