归并排序 //归并排序 void Msort ( RcdType SR[], RcdType TR1[], int s, int t ) { if (s==t) TR1[s] = SR[s]; else { m = (s+t)/2; Msort (SR,TR2,s,m); Msort (SR,TR2,m+1, t); Merge (TR2,TR1,s,m,t); } } void Merge (RcdType SR[], RcdType TR[], int i, int m, int n){ for (j=m+1, k=i; i<=m && j<=n; ++k){ if (SR[i].key<=SR[j].key) TR[k] = SR[i++]; else TR[k] = SR[j++]; } while (i<=m) TR[k++] = SR[i++]; while (j<=n) TR[k++] = SR[j++]; } 基数排序 先把最低位一样的一起排列,输出后则是最低位由小到大。再将倒数第二位一样的一起排列,输出后则是倒数第二位从小到大,即后两位从小到大排列。从低位向高位顺序重复上述过程,最终得到从小到大的有序序列。