归并排序总结

归并排序根据分离和合并是否是在一个递归函数中分成两类。

第一种:

只写一个递归函数。

这个函数的结构是:

void p(旧数组,新数组,左边界,右边界)

{

1 递归终止条件:左边界==右边界

2 求中间位置

3 根据中间位置划分

p(新数组,旧数组,左边界,中间位置);

p(新数组,旧数组,中间位置+1,右边界);

4 合并过程

合并过程包含循环过程和两数组不相等时的后续处理

}

这种写法需要在递归中将新旧数组换位置

参考题目: 剑指offer 数组中的逆序对

第二种:

写一个分离递归函数和合并函数。合并函数嵌套在分离函数中

分离函数:

p(数组,左边界,右边界)

{

1 递归终止条件

2 求中间位置

3 根据中间位置划分

p(新数组,左边界,中间位置);

p(新数组,中间位置+1,右边界)

4 合并函数M

m(数组,左边界,中间位置,右边界)

}

合并函数:

m(数组,左边界,中间位置,右边界)

{

1 求左边和右边的数组大小

2 建立两个数组,分别拷贝左右两个数组

3  合并过程 这个过程可以将后续处理写到一个循环中去

}

参考leetcode  493 reverse pairs


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值