返回一个整数数组中最大子数组的和

 

 

 

设计思想:先输入要输入的数组的元素的个数,然后输入该数组的所有元素,将所有连续元素的正整数作为一个子集,然后算出所有子集的和,然后逐渐比较算出最大子集的和

出现的问题是 时间复杂度较高不是o(n),而是o(n方);

接下来还有继续的改进。

package test;

import java.util.Scanner;

public class test {
	public static void main(String args[])
	{
		Scanner sc=new Scanner(System.in);
		System.out.println("请输入数组个数:");
		int n=sc.nextInt();
		int []a=new int[n];
		System.out.println("请输入要输入数组:");
		for(int i=0;i<n;i++)
		{
			a[i]=sc.nextInt();
		}
		sc.close();	
		int n1=0;
		for(int i=1;i<=n;i++)
		{
			n1=n1+i;
		}
		int [] b=new int[n1];//子集数组的和
		int m1=0;
		for(int i=0;i<n;i++)
		{
			int m=0;
			for(int k=0;k<n-i;k++)
			{   
			    m=m+a[i+k];
				b[m1]=m;
				m1++;
			}
		}
		for(int i=0;i<n1-1;i++)
			for(int k=0;k<n1-1-i;k++)
			{
				if(b[k]<b[k+1])
				{
					int m2=b[k];
					b[k]=b[k+1];
					b[k+1]=m2;
				}
			}
		System.out.println("最大的子数组和为"+b[0]);
	}
}

  

 

posted @ 2019-03-10 19:21  张利杰j  阅读(102)  评论(0编辑  收藏  举报