1.快速排序 -- Quick Sort。
2.时间复杂度:T(n) = k* n *ln(n) (k常数因子)
3.适用条件:目前认为最好的内部排序方法。
1 <?php 2 $arr = [3,4,5,1,11,9,27,27,18,20]; 3 4 function quickSort(array &$arr,$low,$high) 5 { 6 $partQuickSort = function(array &$arr,$low,$high){ 7 $arr[0] = $arr[$low]; 8 9 while($low < $high) 10 { 11 while($low < $high && $arr[$high] >= $arr[0]) 12 { 13 --$high; 14 } 15 $arr[$low] = $arr[$high]; 16 17 while($low < $high && $arr[$low] <= $arr[0]) 18 { 19 ++$low; 20 } 21 $arr[$high] = $arr[$low]; 22 } 23 $arr[$low] = $arr[0]; 24 25 return $low; // 返回枢轴位置 26 }; 27 28 if($low < $high) 29 { 30 $pivot = $partQuickSort($arr,$low,$high); 31 quickSort($arr,1,$pivot-1); 32 quickSort($arr,$pivot+1,$high); 33 } 34 } 35 array_unshift($arr,0); 36 quickSort($arr,1,count($arr)-1); 37 array_shift($arr); 38 echo implode(',',$arr);
输出: