PHP 快速排序

來源:互聯網
上載者:User
  • 快排平均效率O(nlogn),最好情況O(nlogn),最壞情況是當數組有序時,退化成O(n^2)
 1 <?php 2     #快速排序 3     #@param $arr    待排序數組 4     #@param $start    排序的開始座標 5     #@param $end    排序數組的結束座標 6     function quickSort(Array &$arr, $start, $end) { 7         $low = $start; 8         $high = $end; 9         10         #同時移動low和high,low找比$arr[$start]大的元素,high找比$arr[$start]小的元素11         #交換大小元素位置,知道low=high12         while($low != $high) {13             while($arr[$low] <= $arr[$start] && $low != $high) {14                 ++$low;15             }16             while($arr[$high] >= $arr[$start] && $low != $high) {17                 --$high;18             }19             $temp = $arr[$low];20             $arr[$low] = $arr[$high];21             $arr[$high] = $temp;22         }23         24         #如果low和high指向的元素小於$arr[$start],交換$arr[$start]和這個元素25         #否則交換$arr[$start]和low指向的前一個元素,然後進入遞迴26         if($low != $start && $arr[$low] > $arr[$start]) $low--;27         $temp = $arr[$low];28         $arr[$low] = $arr[$start];29         $arr[$start] = $temp;30         31         #遞迴中止條件是切分後的部分只剩下一個元素32         if($low - 1 > $start) quickSort($arr, $start, $low - 1);33         if($low + 1 < $end) quickSort($arr, $low + 1, $end);34     }35     36     $arr = array(8, 8, 1, 1, 5, 3, 7, 9, 8, 4, 10);37     quickSort($arr, 0, count($arr) - 1);38     39     print_r($arr);40 ?>

輸出

Array ( [0] => 1 [1] => 1 [2] => 3 [3] => 4 [4] => 5 [5] => 7 [6] => 8 [7] => 8 [8] => 8 [9] => 9 [10] => 10 )

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.