首页 > 其他 > 详细

求小和问题

时间:2018-01-27 23:36:09      阅读:348      评论:0      收藏:0      [点我收藏+]

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

解法1:暴力解法

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

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

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

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

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

求小和问题

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

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