今天在看算法导论的时候,发现有一个练习,就是要写出归并排序的算法的伪代码。个人秉承学习的态度写了下来,以此纪念学习算法的开始~
归并排序算法的核心操作是归并:
void Merge( T A,T &B, s,m,e)//将A中的A[s..m]和A[m+1..e]合并成B[s..e]
{
for( j = m+1,k = s; j <=e && s<= m;k++)
{
if( A[j] < A[s] ) B[k] = A[j++];
esle B[k] = A[s++];
}
if( s <= m ) B[k..e] = A[s..m];
if( j <= e) B[k..e] = A[j..e];
}
排序算法
void MSort(T A,T &B,int s,int t)
{
if(s== t) B[s] = A[s];
else
{
m = (s+t)/2;
MSort(A,B,s,m);
MSort(A,B,m+1,t);
Merge(A,B,s,m,t);
}
}
}