二分归并排序

二分归并排序是归并排序(合并排序)里面最简单的一种实现。

             这个算法的主要思想是:将被排序的数组划分成相等的两个子数组,然后递归使用同样的算法分别对两个子数组排序。最好将两个排好序的子数组归并成一个数组。

       归并的过程如下:假设两个子数组是A和B,它们的元素都按照从小到大的顺序排列。将A与B归并后的数组记作C。设定两个指针p1,p2,初始分别指向A和B的最小元素。归并时只需比较p1,p2指向的元素,哪个元素小,就把它从原来的数组移到C,原来指向它的指针向后移动一个位置。如果A和B中有一个数组的元素已经被全部移走,那么比较过程结束,剩下的工作就是将B中剩下的元素顺序移动C的后面。

       考虑10个数的数组:1,5,7,8,2,4,6,9,10,3,使用归并排序算法,首先划分成两个子数组,即A=[1,5,7,8,2],B=[4,6,9,10,3]. 然后对于A和B分别调用同样的算法进行排序。假设A和B已经完成排序,即A=[1,2,5,7,8],B=[3,4,6,9,10],下面进行归并。首先1与3 比较,拿走1;接着2与3比较,拿走2;再接着5和3比较,拿走3,.........继续下去,依次拿走4,5,6,7,8.这是A数组已经空了,比较结束,把B中剩下的9和10顺序放到归并后的数组中

   

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值