PHP 快速排序

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);

输出:

 

posted @ 2017-03-08 00:02  GoodByeZ  阅读(151)  评论(0编辑  收藏  举报