码迷,mamicode.com
首页 > 其他好文 > 详细

求小和问题

时间:2018-01-28 00:10:01      阅读:170      评论:0      收藏:0      [点我收藏+]

标签:div   产生   body   归并排序   遍历   复杂   class   左右   暴力   

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

解法1:暴力解法

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

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

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

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

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

求小和问题

标签:div   产生   body   归并排序   遍历   复杂   class   左右   暴力   

原文地址:https://www.cnblogs.com/keniefu/p/8367607.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!