快速排序,又稱劃分交換排序(partition-exchange sort)
1.基本思想
透過一趟排序將待排記錄分隔成獨立的兩部分,其中一部分記錄的關鍵字均比另一部分的關鍵字小,則可分別對這兩部分記錄繼續進行排序,以達到整個序列有序。
2.實現邏輯
快速排序使用分治法(Divide and conquer)策略來把一個序列(list)分為兩個子序列(sub-lists)。
① 從數列中挑出一個元素,稱為 “基準”(pivot),
② 重新排序數列,所有元素比基準值小的擺放在基準前面,所有元素比基準值大的擺在基準的後面(相同的數可以到任一邊)。在這個分割槽退出之後,該基準就處於數列的中間位置。這個稱為分割槽(partition)操作。
遞迴到最底部時,數列的大小是零或一,也就是已經排序好了。這個演算法一定會結束,因為在每次的迭代(iteration)中,它至少會把一個元素擺到它最後的位置去。
3. 與其他排序方法區別
相比其他排序,快速排序在排序演算法中具有排序速度快,而且是就地排序等優點,使得在許多程式語言的內部元素排序實現中採用的就是快速排序。
4. 動態圖演示
快速排序,又稱劃分交換排序(partition-exchange sort)
1.基本思想
透過一趟排序將待排記錄分隔成獨立的兩部分,其中一部分記錄的關鍵字均比另一部分的關鍵字小,則可分別對這兩部分記錄繼續進行排序,以達到整個序列有序。
2.實現邏輯
快速排序使用分治法(Divide and conquer)策略來把一個序列(list)分為兩個子序列(sub-lists)。
① 從數列中挑出一個元素,稱為 “基準”(pivot),
② 重新排序數列,所有元素比基準值小的擺放在基準前面,所有元素比基準值大的擺在基準的後面(相同的數可以到任一邊)。在這個分割槽退出之後,該基準就處於數列的中間位置。這個稱為分割槽(partition)操作。
遞迴到最底部時,數列的大小是零或一,也就是已經排序好了。這個演算法一定會結束,因為在每次的迭代(iteration)中,它至少會把一個元素擺到它最後的位置去。
3. 與其他排序方法區別
相比其他排序,快速排序在排序演算法中具有排序速度快,而且是就地排序等優點,使得在許多程式語言的內部元素排序實現中採用的就是快速排序。
4. 動態圖演示