返回一個整數數組中子數組的最大值
阿新 • • 發佈:2017-12-06
alt 時間復雜度 1+n style png 分享圖片 static 依次 圖片
要求:
輸入整數數組,子數組求和,求子數組的最大值,時間復雜度為0,
設計思想:
隨機生成N個整數,規定子數組的個數最大值為3的隨機值,先生成一個數n1,在用for循環將前n個數向加賦值給sun[i],再生成一個隨機數n2,,將n1到n2 之間的數相加賦值給sun[j++],依次循環,如果n1+n2+······大於N那將最後的和在賦值給sun[j],然後判斷sun[]中的最大值,最後輸出
public class Test { /** * @param args */ final static int N=10; public static void main(String[] args) {// TODO 自動生成的方法存根 int[] a=new int[N]; int j=0; int k; int l=0; int[] sum ={0,0,0,0,0,0,0,0,0}; System.out.print("數組:"); for(int i=0;i<N;i++) { a[i]=(int) (Math.random()*40-20); System.out.print(a[i]+" "); } System.out.println(); k=(int) (Math.random()*3+1); j=k; for(int i=0;i<N;) { sum[l]=sum[l]+a[i]; if(i<j) { i++; } if(i==j) { j=j+k; k=(int) (Math.random()*3+1); l++; } if(j>N) { j=N; } } System.out.print("子數組:"); for(int i=0;i<l;i++) { System.out.print(sum[i]+" "); } System.out.println(); int max=sum[0]; for(int i=0;i<l;i++) { if(sum[i]>max) max=sum[i]; } System.out.print("最大子數組:"+max); } }
結果:
返回一個整數數組中子數組的最大值