1. 程式人生 > 其它 >快速排序_三數取中.md

快速排序_三數取中.md

圖解排序演算法(五)之快速排序——三數取中法

快速排序由C. A. R. Hoare在1962年提出。它的基本思想是:通過一趟排序將要排序的資料分割成獨立的兩部分,其中一部分的所有資料都比另外一部分的所有資料都要小,然後再按此方法對這兩部分資料分別進行快速排序,整個排序過程可以遞迴進行,以此達到整個資料變成有序序列

基本步驟

三數取中

  在快排的過程中,每一次我們要取一個元素作為樞紐值,以這個數字來將序列劃分為兩部分。在此我們採用三數取中法,也就是取左端、中間、右端三個數,然後進行排序,將中間數作為樞紐值。

 根據樞紐值進行分割

總結

  快速排序是一種交換類的排序,它同樣是分治法的經典體現。在一趟排序中將待排序的序列分割成兩組,其中一部分記錄的關鍵字均小於另一部分。然後分別對這兩組繼續進行排序,以使整個序列有序。在分割的過程中,樞紐值的選擇至關重要,本文采取了三位取中法,可以很大程度上避免分組"一邊倒"的情況。快速排序平均時間複雜度也為O(nlogn)級。