归并排序~

归并排序的思想:左部分先有序,右部分先有序,在用一个merge(归并)让它整体有序。

merge:两个指针各指向左右两边第一个最小的数,谁小拷贝谁,相等拷贝左边的。

 递归实现,实现有序。利用mergeSort变得有序,这个有序能帮我们干很多事情。

 迭代实现:

一个数组,步长为1时,两个位置去比较,merge。步长为2时,两组数merge。

 

 

 

 1、常见的mergeSort题

1、小和问题:每个数左边的数 比自己小的数都累加起来,最后求和。

两种标准:

标准一:到达i位置时,arr[i]左边比arr[i]小的数加起来,i++

标准二:到达i位置时,arr[i]右边有几个数比arr[i]大,就加几个arr[i]

 每一个数都是,先和最近的右组看几个数比自己大。

 

2、求一个数组中有多少个逆序对

逆序对:当左边的数与右边的数是降序时,就构成一个逆序对

 思路:merge从右边开始,数组右边开始放数,相等从右往左排

3、一个数组arr[ ],求这个数组中有多少个组?num数大于右边的数*2,则是一组.

技巧:

①先算完,再来merge合并。

②左闭右开的使用

③不回退技巧,来自于dandiaoxin

 总结:利用这三个题,可以总结出一个数左边或者右边有几个什么的,都可以往这上面靠

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值