计算数组的小和
来源:互联网 发布:筛子目的算法 编辑:程序博客网 时间:2024/05/05 03:59
/** * Created by lxw, liwei4939@126.com on 2017/11/3. * 计算数组的小和 * 归并排序 */public class arraySmallSum { public int getSmallSum(int[] arr){ if(arr ==null || arr.length == 0){ return 0; } return fun(arr, 0, arr.length - 1); } public int fun(int[] s, int l, int r){ if(l == r){ return 0; } int mid = (l + r) /2; return fun(s, l, mid) + fun(s, mid + 1, r) + merge(s, l, mid, r); } public int merge(int[] s, int left, int mid, int right){ int[] h = new int[right - left + 1]; int hi = 0; int i = left; int j =mid + 1; int smallSum = 0; while (i<= mid && j <= right){ if(s[i] <= s[j]){ smallSum += s[i] * (right - j +1); h[hi++] = s[i++]; } else { h[hi++] = s[j++]; } } for (; (j < right + 1) || (i < mid +1); i++, j++){ h[hi++] = i > mid ? s[j] : s[i]; } for (int k=0; k< h.length; k++){ s[left++] = h[k]; } return smallSum; } public static void main(String[] args){ arraySmallSum tmp = new arraySmallSum(); int[] arr = {1, 3, 5, 2, 4, 6}; System.out.println(tmp.getSmallSum(arr)); }}
阅读全文
0 0
- 计算数组的小和
- 数组与矩阵---计算数组的小和
- 从一个计算 数组累加和 的小程序看 程序性能优化 的小技巧
- 归并排序应用——数组中的逆序对 and 计算数组的小和
- 求数组的小和
- 组合数快速计算-尽量小的数组
- 计算m个数组的和
- 用指针计算数组元素的和
- 利用多线程计算元素数组的和
- java 并发计算数组的和
- java 并发计算数组和的示例
- Java数组和字符串的长度计算
- 计算数组的最大子段和
- c语言中数组和数组的一些计算
- 计算数组元素和
- 数组和指针的一些小知识
- 函数和数组的小知识点笔记
- 月份的小计算
- day6总结
- 隔离装置传输文件
- 机房之完结
- 人脸识别-常用数据库
- WebApi实现验证授权Token,WebApi生成文档等
- 计算数组的小和
- AI笔记
- c++日期类的实现
- SSL/TLS协议运行机制的概述
- sqlalchemy 一对多关系
- 浅谈Java内存模型
- 关于Tomcat 6的热部署和热加载
- 分析reduce()的原理
- HttpClient使用详解总结大全①