標籤:返回 快速排序 lod return function 方法 sort unshift com
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);
輸出:
PHP 快速排序