相关代码 |
|
算法 3.10 void Msort ( RcdType SR[], RcdType TR1[], int s, int t ) { // 对SR[s..t]进行归并排序,排序后的记录存入TR1[s..t]。 RcdType TR2[t-s+1]; //开设用于存放归并排序中间结果的辅助空间 if (s==t) TR1[s] = SR[s]; else { m = (s+t)/2; // 将SR[s..t]平分为SR[s..m]和SR[m+1..t] Msort (SR, TR2, s, m); // 递归地将SR[s..m]归并为有序的TR2[s..m] Msort (SR, TR2, m+1, t); // 递归地将SR[m+1..t]归并为有序的TR2[m+1..t] Merge (TR2, TR1, s, m, t); // 将TR2[s..m]和TR2[m+1..t]归并到TR1[s..t] } // else } // MSort