以下是「快速排序演算法」(Quick Sort Algorithm)的虛擬碼(Pseudo Code),並附上註解說明:
function quickSort(array, low, high):
// 檢查是否有需要排序的子數組
if low < high:
// 對數組進行分割,並獲取分割點
pivotIndex = partition(array, low, high)
// 遞歸排序分割點左邊的子數組
quickSort(array, low, pivotIndex - 1)
// 遞歸排序分割點右邊的子數組
quickSort(array, pivotIndex + 1, high)
function partition(array, low, high):
// 選擇最右邊的元素為基準點
pivot = array[high]
// 初始化分割點索引
i = low - 1
// 從左到右遍歷數組
for j = low to high - 1:
// 如果當前元素小於或等於基準點
if array[j] <= pivot:
// 增加分割點索引
i = i + 1
// 交換元素,使小於基準點的元素移到分割點左邊
swap(array, i, j)
// 將基準點移到正確位置
swap(array, i + 1, high)
// 返回基準點索引
return i + 1
function swap(array, index1, index2):
// 交換數組中的兩個元素
temp = array[index1]
array[index1] = array[index2]
array[index2] = temp
// 主程序開始點
array = [your array here]
quickSort(array, 0, length(array) - 1)
註解說明
quickSort 函數:
檢查 low 是否小於 high,以確定子數組是否有需要排序的元素。
調用 partition 函數對數組進行分割,並獲取分割點的索引 pivotIndex。
遞歸調用 quickSort 函數對分割點左邊和右邊的子數組分別進行排序。
partition 函數:
選擇數組最右邊的元素作為基準點(pivot)。
初始化分割點索引 i 為 low - 1。
遍歷 low 到 high - 1 範圍內的元素:
如果當前元素小於或等於基準點,則增加分割點索引 i,並交換元素。
將基準點移到正確位置,即交換 i + 1 和 high 的元素。
返回基準點的索引 i + 1。
swap 函數:
交換數組中兩個指定索引的元素。
主程序開始點:
初始化數組並調用 quickSort 函數進行排序。
這個虛擬碼展示了快速排序演算法的基本結構和步驟,並包含了詳細的註解來說明每一步的作用。