求小和问题

Posted keniefu

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了求小和问题相关的知识,希望对你有一定的参考价值。

给一个乱序数组,求出所有比右边元素小的元素的和。

解法1:暴力解法

直接遍历数组a,i指定一个元素,j在右边数组中遍历,找到比他大的元素就在s上加a[i],一直遍历完,时间复杂度O(n^2)

解法2:利用归并排序求小和

如果把数组分成两份,那么整个数组的小和就是左半份数组组内的小和加上右半份数组组内的小和,加上左右两半数组组间的小和。那么就是在合并归并过程中,右指针未越界左半部分指针移动的过程中产生小和。

因此,只要统计右指针未越界左半部分指针移动的元素的和就是组间的小和。

左半部分的小和和右半部分的小和可以复用这一过程,递归求出整个数组的小和,边界条件就是只有一个元素的数组,组内小和当然为零。

以上是关于求小和问题的主要内容,如果未能解决你的问题,请参考以下文章

算法归并排序 小和 问题

小和问题与荷兰国旗问题

归并排序应用-------小和问题

归并排序之求小和

第k小和(搜索)

归并排序:小和问题