匿名使用者
匿名使用者 發問時間: 電腦與網際網路程式設計 · 1 0 年前

C 關於”合併排序法(Merge Sort)”

請問~該如何利用"合併排序法(Merge Sort)"寫出程式碼?

1.讓使用者能輸入數字!

2.進行排序實作!

3.顯示排序過程與結果~結束!

原理(參考課本):

先對切成兩組

左半部分再對切

進行數字比較

小的排在前面

做完後~

換右半(尚未處理區)

再對切進行比較排序

之後將左右兩半(各自處理好排序的)

進行最終比較!(顯示結果,結束!)

原理有懂..................

可是程式碼(很不熟)不知該怎麼寫?

希望大大指點!!!感激~~~

1 個解答

評分
  • 1 0 年前
    最佳解答

    輸入:正整數n,未排序的陣列S[0..n-1]

    輸出:已排序的陣列S

    演算法:(c)

    void mergesort(index low, index high)

    {

    index mid;

    if(low < high) {

    mid = (low+high)/2; //算出頭尾的中間值

    mergesort(low, mid); //把頭和中間值之間的陣列作合併排序法

    mergesort(mid+1, high); //把中間和尾巴之間的陣列作合併排序法

    merge(low, mid, high); // 把頭到中間值之間的陣列和中間到尾巴之間的陣列作合併

    }

    }

    輸入:索引值的low, mid, high;low到mid之間已經排好而且mid+1到high之間已經排好的陣列S[0..n-1]

    輸出:low到high之間已經排好的陣列S[0..n-1]

    演算法:(c)

    void merge (index low, index mid, index high)

    {

    index i, j, k;

    keytype U[low..high];

    i=low; j=mid+1; k=low;

    while (i

    參考資料: Foundations of Algorithms-using C++ Pseudocode 3rd
還有問題?馬上發問,尋求解答。