归并排序(二路归并)

归并排序,采用分治法,将目标数组划分为有序数组,将划分后有序数组合并为有序数组的过程。

1)分:我们可以认为,数组长度为1的数组是有序数组。所以归并排序中分即为将目标数组划分为数组长度为1的最小单位有序数组

2)合:两两合并划分的数组,定义目标长度为两划分数组长度和的临时数组,比较两数组元素值,将较小者依次放入临时数组中

3)再以元素为2的n次方递增顺序重复步骤一、二,直至,划分的临时数组长度为目标数组的一半再合并即为目标数组,归并排序完成

例:

目标数组为:{8,6,13,1,12,0,7,0,2,10,0,3,7,20,7}

划分为最小单位数组 :{8} , {6} , {13} , {1} , {12} , {0} , {7} , {0} , {2} , {10} , {0} , {3} , {7} , {20} , {7}

两两数组合并后 :{6,8}, {1, 13, {0, 12}, {0, 7}, {2, 10}, {0, 3}, {7, 20}, {7}

将两两合并后的有序数组合并为等于目标数组长度的数组:

第一次归并后,目标数组变成:{6, 8, 1, 13, 0, 12, 0, 7, 2, 10, 0, 3, 7, 20, 7}

重复第一、二步骤,此时,划分的临时数组长度为2

划分后数组为:{6,8}, {1, 13, {0, 12}, {0, 7}, {2, 10}, {0, 3}, {7, 20}, {7}

两两数组合并后:{1, 6, 8, 13} , {0, 0, 7, 12} , {0, 2, 3, 10} , {7, 7, 20}

将两两合

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值