以下的start、mid、end都是陣列的索引值。
void merge(int *data, int start, int mid, int end)
{
這個函式做合併的動作。
}
void mergeSort(int *data, int start, int end)
{
如果start == end,就return;
//這個函式做切割的動作。
(i) 先切成:mid = (start+end)/2,這代表一個陣列切成start到mid跟mid到end。
(ii) 把start到mid的部分遞迴給自己切。mid+1到end遞迴給自己切。
(iii) 把start到end部分陣列送給merge合併。
}
2. Quick Sort:
把以上這個圖所做的動作寫在一個函式裡(假設此函式叫做A),在這個函式的最後回傳個索引值:i+1。
這樣就可以在QuickSort函式內利用遞迴,以下是QuickSort函式類內容架構:
Quick Sort終止條件:if( indexLeft >= indexRight) return;
int cut = A(data, indexLeft, indexRight);
QuickSort(data, indexLeft, cut-1);
QuickSort(data, cut+1, indexRight);
沒有留言:
張貼留言