阿摩線上測驗 登入

申論題資訊

試卷:110年 - 110-2 臺灣港務股份有限公司從業人員_師級_資訊:資訊系統設計、規劃及專案管理#100710
科目:港務局◆資訊系統規劃與管理實務(含系統分析與設計、資料庫系統)
年份:110年
排序:0

申論題內容

1 請以虛擬碼(Pseudo Code)方式呈現「快速排序演算法」(Quick Sort Algorithm),並請適時加上註解說明。

詳解 (共 1 筆)

詳解 提供者:hchungw

以下是「快速排序演算法」(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 函數進行排序。
這個虛擬碼展示了快速排序演算法的基本結構和步驟,並包含了詳細的註解來說明每一步的作用。