您的位置:首页 > 其它

子数组和最大值算法

2016-04-08 16:33 176 查看
程序设计思路:

有数组Array[10], 先设置两个变量sum和max,一个存贮子数组的和,一个存贮和的最大值,先令sum=Array[0] max=Array[0],然后用循环遍历数组的每一个数,如果sum+Array[1]> sum那么将sum更新为sum+Array[1],如果更新的sum大于max那么将max更新为sum。如果sum+Array[1]<0那么令sum=0,再往后查找别的子数组。如果sum+第二个数的值大于0小于sum,令sum=sum+Arrar[1]。

程序源代码:

public class Test2 {
public static void main(String args[]){
int Array[]={0,1,5,-4,9,10,54,-6,-34,78};
int max=Array[0];
int sum=Array[0];
for(int i=1;i<10;i++){
if(sum+Array[i]>=sum){
sum=sum+Array[i];
if(sum>max){
max=sum;}
}
else if(sum+Array[i]<0){
sum=0;
}
else{
sum=sum+Array[i];
}
}
System.out.println("和最大的子数组的和为:"+max);
}
}


运行结果截屏:



问题分析:

  在运算子数组和的时候,比较加上下一数据项和已存在子数组的和相比较,在和小于原盒的时候直接归零了,导致算出的和最大值有误!

  即令sum+Array[i]<sum)直接使sum=0,出现错误

总结:
  在写程序的时候应该先想好思路,想清楚算法,不然容易出现错误
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: