小和问题和逆序对问题
小和问题
在一个数组中,每一个数左边比当前数小的数累加起来,叫做这个数组的小和。求一个数组 的小和。 例子: [1,3,4,2,5] 1左边比1小的数,没有; 3左边比3小的数,1; 4左边比4小的数,1、3; 2左边比2小的数,1; 5左边比5小的数,1、3、4、2; 所以小和为1+1+3+1+1+3+4+2=16 要求复杂度小于O(n^2)
思路:
归并的方法,找出左边部分的小和 右边部分的小和 以及左右两部分合一起产生的小和
Tn = 2(T(n/2))+O(n)
复杂度 nlogn
逆序对问题
在一个数组中,左边的数如果比右边的数大,则折两个数构成一个逆序对,请打印所有逆序 对。 本质上和小和问题一样