归并排序的简单算法

归并排序,顾名思义, 是将两个不同序列合为一个有序的序列。

以简单的的整型数组为例吧,数组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++];

}

注:小弟处于学习阶段,有些需要改进,还望各大虾指点改进,在此谢过各位!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值