归并排序,顾名思义, 是将两个不同序列合为一个有序的序列。
以简单的的整型数组为例吧,数组A和数组B均有序,将其合并到数组C中。算法的大致思想为:设置两个指向A和B的哨兵,比较其元素的大小,将较小者放入到C中,最终得到的数组就有有序的数组。
void MergerSort ( ElementType Sour_A[ ] ,
ElementType Sour_B[ ] ,
ElementType Des[ ] ,
int a_len ,
int b_len )
{
int pa;
int pb;
int pc;
ElementType ea,eb,temp;
pa=pb=pc=0;
while ( pa<a_len && pb<b_len )
{
ea=Sour_A[pa];
eb=Sour_B[pb];
if ( ea==eb )
{
temp=ea;
pa++;
pb++;
}
else
{
if(ea<eb)
temp=Sour_A[pa++];
else
temp=Sour_B[pb++];
}
Des[pc++]=temp;
}
while ( pa < a_len )
Des[pc++]=Sour_A[pa++];
while ( pb < b_len )
Des[pc++]=Sour_B[pb++];
}
注:小弟处于学习阶段,有些需要改进,还望各大虾指点改进,在此谢过各位!