1. 程式人生 > 其它 >資料結構--快速排序

資料結構--快速排序

快速排序演算法是一種經典的排序演算法。

基本思想:

選擇一個基準元素(通常選擇第一個元素或者最後一個元素),通過一趟排序將待排序序列分成兩部分,一部分比基準元素小,一部分大於等於基準元素,此時基準元素在其排好序後的正確位置;然後再遞迴地排序劃分的兩部分。

因此本質上快速排序是一種分治演算法。

由於在排序的過程中,各元素與基準元素比較大小,若小於基準元素則與基準元素交換位置,因此該演算法是不穩定的排序演算法。

當每一趟排序進行後,選擇的基準元素恰好最大或者最小時,就把序列分成極端不均衡的兩部分,即一部分為空,另一部分為待排序序列的元素個數減1,此時演算法處於最壞情況,其時間複雜度為O(n2)。

當輸入資料基本有序或者所有元素值相等時,不論選擇第一個元素還是最後一個元素作為基準元素,都恰好把序列分成極端不均衡的兩部分,快速排序演算法具有最壞情況下的時間複雜度。         

   

所以快速排序演算法是不穩定的,正常情況下時間複雜度為O(nlgn),最壞情況下為O(n2),空間複雜度為O(1)。

程式碼實現1.6 快速排序 | 菜鳥教程 (runoob.com)