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