快速選擇

在計算機科學中 ， 快速選擇  是一種從無序列表找到第k小元素的選擇算法 。 它從原理上來說與快速排序有關 。 與快速排序一樣都由託尼 · 霍爾提出的 ， 因而也被稱爲霍爾選擇算法 。 同樣地 ， 它在實際應用是一種高效的算法 ， 具有很好的平均時間複雜度 ， 然而最壞時間複雜度則不理想 。 快速選擇及其變種是實際應用中最常使用的高效選擇算法 。 快速選擇的總體思路與快速排序一致 ， 選擇一個元素作爲基準來對元素進行分區 ， 將小於和大於基準的元素分在基準左邊和右邊的兩個區域 。 不同的是 ， 快速選擇並不遞歸訪問雙邊 ， 而是隻遞歸進入一邊的元素中繼續尋找 。 這降低了平均時間複雜度 ， 從O ( n log n ) 至O ( n ) ， 不過最壞情況仍然是O ( n2 ) 。 與快速排序一樣 ， 快速選擇一般是以原地算法的方式實現 ， 除了選出第k小的元素 ， 數據也得到了部分地排序 。