歸併排序

歸併排序算法是將兩個(或兩個以上)有序表合併成一個新的有序表,即把待排序序列分爲若干個子序列,每一個子序列是有序的,而後再把全部的有序子序列合併。算法

2-路歸併排序示例:數組

2-路歸併排序的核心操做是:將一維數組中先後相鄰的兩個有序序列歸併爲一個有序序列。其算法以下:spa

 1 void Merge(Elemtype *r,Elemtype *rf,int i,int m,int n)
 2 {
 3     int j,k;
 4     for(j=m+1;k=i;i<=m&&j<=n;++k)
 5     {
 6         if(r[j]<r[i])
 7             rf[k]=r[j++];
 8         else
 9             rf[k]=r[i++];
10     }
11     while(i<=m)
12         rf[k++]=r[i++];
13     while(j<=n)
14         rf[k++]=r[j++];
15 }
相關文章
相關標籤/搜索