首页 > 其他 > 详细

小和问题和逆序对问题

时间:2020-02-10 10:51:31      阅读:47      评论:0      收藏:0      [点我收藏+]

小和问题

技术分享图片

 笨办法:每个位置左边都遍历一下,时间复杂度O(n²),额外空间复杂度O(1)。

解决思路

a. 将当前序列分为两个子序列,分别求其小和
b. 对a划分得到的两个子序列进行merge操作,得到合并过程产生的小和,再加上a得到的两个子序列的小和之和
c. 递归地执行a和b

merge操作采用二路归并排序的思想
求一个数组的小和,可以转化为求每个元素在小和累加过程出现的次数,然后将当前元素与出现次数相乘,累加得到小和
假设当前元素为a,a右边比a大的元素个数则为a在小和累加过程出现的次数

实现过程

技术分享图片时间复杂度O(nlogn)额外空间复杂度O(n)

实现代码

 https://github.com/superjishere/algorithm/blob/master/zuo/%E5%88%9D%E7%BA%A7/01/Code_12_SmallSum.java

逆序对问题

技术分享图片

解决思路

与小和问题类似,只不过这里找的是左边比右边大的数。

小和问题和逆序对问题

原文:https://www.cnblogs.com/superjishere/p/12288426.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!