選擇排序基本資訊
選擇排序是一種排序演算法,特別是就地比較排序。它具有 O(n2)
時間複雜度,使其在大型列表上效率低下,並且通常比類似的插入排序更差。選擇排序因其簡單性而著稱,並且在某些情況下具有優於更復雜演算法的效能優勢,特別是在輔助儲存器有限的情況下。
該演算法將輸入列表分為兩部分:已經排序的專案子列表,在列表的前面(左側)從左到右構建,以及剩餘要排序的專案的子列表佔用其餘部分。名單。最初,排序的子列表為空,未排序的子列表是整個輸入列表。該演算法通過查詢未排序子列表中的最小(或最大,取決於排序順序)元素,與最左邊的未排序元素(將其按排序順序)交換(交換),並將子列表邊界向右移動一個元素來繼續。
選擇排序的虛擬碼:
function select(list[1..n], k)
for i from 1 to k
minIndex = i
minValue = list[i]
for j from i+1 to n
if list[j] < minValue
minIndex = j
minValue = list[j]
swap list[i] and list[minIndex]
return list[k]
選擇排序的視覺化:
https://i.stack.imgur.com/LZepY.gif
選擇排序示例:
https://i.stack.imgur.com/CaSlf.jpg
輔助空間: O(n)
時間複雜度: O(n^2)