给一个乱序数组,求出所有比右边元素小的元素的和。
解法1:暴力解法
直接遍历数组a,i指定一个元素,j在右边数组中遍历,找到比他大的元素就在s上加a[i],一直遍历完,时间复杂度O(n^2)
解法2:利用归并排序求小和
如果把数组分成两份,那么整个数组的小和就是左半份数组组内的小和加上右半份数组组内的小和,加上左右两半数组组间的小和。那么就是在合并归并过程中,右指针未越界左半部分指针移动的过程中产生小和。
因此,只要统计右指针未越界左半部分指针移动的元素的和就是组间的小和。
左半部分的小和和右半部分的小和可以复用这一过程,递归求出整个数组的小和,边界条件就是只有一个元素的数组,组内小和当然为零。