分治_数列最大值
来源:互联网 发布:傻瓜记账软件 编辑:程序博客网 时间:2024/05/30 02:23
package agrisom;
/**
* 分治法求数列最大值
*/
public class FindMax {
public int devideAndConquer(int array[]) {
int length = array.length;
int first;
int second;
if (length == 1) {
return array[0];
} else if (length == 2) {
return Math.max(array[0], array[1]);
} else if (length < 1) {
return 0;
} else {
first = length / 2;
second = length - length / 2;
int firstArray[] = new int[first];
int secondArray[] = new int[second];
for (int i = 0; i < first; i++) {
firstArray[i] = array[i];
}
for (int j = first; j < length; j++) {
secondArray[j - first] = array[j];
}
return Math.max(devideAndConquer(firstArray), devideAndConquer(secondArray));
}
}
public static void main(String[] args) {
FindMax findMax = new FindMax();
int array[] = { 5, 12, 1, 36, 9, 2, 14, 30, 21, 56, 80, 12, 33 };
long beginTime = System.nanoTime();
int max = findMax.devideAndConquer(array);
long endTime = System.nanoTime();
System.out.println("最大值:" + max);
System.out.println("耗时: " + (endTime - beginTime) + " ns");
}
}
/**
* 分治法求数列最大值
*/
public class FindMax {
public int devideAndConquer(int array[]) {
int length = array.length;
int first;
int second;
if (length == 1) {
return array[0];
} else if (length == 2) {
return Math.max(array[0], array[1]);
} else if (length < 1) {
return 0;
} else {
first = length / 2;
second = length - length / 2;
int firstArray[] = new int[first];
int secondArray[] = new int[second];
for (int i = 0; i < first; i++) {
firstArray[i] = array[i];
}
for (int j = first; j < length; j++) {
secondArray[j - first] = array[j];
}
return Math.max(devideAndConquer(firstArray), devideAndConquer(secondArray));
}
}
public static void main(String[] args) {
FindMax findMax = new FindMax();
int array[] = { 5, 12, 1, 36, 9, 2, 14, 30, 21, 56, 80, 12, 33 };
long beginTime = System.nanoTime();
int max = findMax.devideAndConquer(array);
long endTime = System.nanoTime();
System.out.println("最大值:" + max);
System.out.println("耗时: " + (endTime - beginTime) + " ns");
}
}
- 分治_数列最大值
- 算法_分治策略_找到最大值与最小值
- 分治法求最大值
- 分治法求最大值
- 高效算法设计_递归与分治(贷款,最大值最小化)
- 分治法找最大值最小值
- 使用分治法求最大值
- 分治法求数组最大值
- 分治法求最大值最小值
- 模板_点分治
- 分治_递归_quick_sort
- 分治法之二分法搜索最大值最小值
- 数组中子数组最大值----分治思想
- 最大值最小化问题——分治
- 计算最大值和最小值(分治法)
- 求解最大值与最小值-分治算法
- 分治算法求数组的最大值最小值
- 栈_数列反转
- Hessian学习
- 转android Reflection 反射
- 聊天工具
- iBatis中易混概念isNull isEmpty isNotNull isNotEmpty
- 文件信息批量导入数据库(Struts2实现文件上传,POI实现Excel文件读取并写入数据库) .
- 分治_数列最大值
- 总结一下基于s3c2440开发板进行开发的一些流程
- BIEE 之 介绍变量与请求变量
- 关于openGL, openGL ES, openVG及android中2D调用关系的报告
- 对自己大学专业学习的期望
- GCC链接脚本
- 打开Android C文件中的LOG
- android中network的连接不能在直接在主线程中执行
- Linux下Eclipse修改JVM路径