1 package 数组;
2
3 import java.io.BufferedReader;
4 import java.io.File;
5 import java.io.FileInputStream;
6 import java.io.FileWriter;
7 import java.io.IOException;
8 import java.io.InputStreamReader;
9 import java.util.ArrayList;
10 import java.util.List;
11 import java.util.Scanner;
12
13 public class Shuzu7 {
14 public static void main(String[] args)throws IOException
15 {
16 List<Integer> list=new ArrayList<>();
17 Scanner scan=new Scanner(System.in);
18 System.out.println("请执行操作:1、普通数组求最大子数组 2、百万数组求最大子数组");
19 int x=scan.nextInt();
20 if(x==1)
21 {
22 try {
23 File file = new File("shuzu.txt");
24 if(file.isFile() && file.exists()) {
25 InputStreamReader isr = new InputStreamReader(new FileInputStream(file), "utf-8");
26 BufferedReader br = new BufferedReader(isr);
27 String lineTxt = "";
28 while ((lineTxt = br.readLine()) != null){
29 list.add(Integer.parseInt(lineTxt));
30 }
31 Object[]a=list.toArray();
32 System.out.println((int)a[1]+(int)a[3]);
33 br.close();
34 int sum=a.length;
35 int sum1=0;
36 for(int i=1;i<=sum;i++)
37 {
38 sum1=sum1+i;
39 }
40 int [] b=new int[sum1];
41 int temp1=0;
42 for(int i=0;i<sum;i++)
43 {
44 int temp=0;
45 for(int k=0;k<sum-i;k++)
46 {
47 temp=temp+(int)a[i+k];
48 b[temp1]=temp;
49 temp1++;
50 }
51 }
52 for(int i=0;i<sum1-1;i++)
53 for(int k=0;k<sum1-1-i;k++)
54 {
55 if(b[k]<b[k+1])
56 {
57 int temp2=b[k];
58 b[k]=b[k+1];
59 b[k+1]=temp2;
60 }
61 }
62 System.out.println("最大的子数组和为"+b[0]);
63 } else {
64 System.out.println("文件不存在!");
65 }
66 } catch (Exception e) {
67 System.out.println("文件读取错误!");
68 }
69 }
70 if(x==2)
71 {
72 FileWriter fw = null;
73 try {
74 //创建字符输出流
75 fw = new FileWriter("shuzu1.txt");
76 for(int i=0;i<50;i++)
77 {
78 int intval=(int)(Math.random()*-9000000+8999999);
79 fw.write(""+intval+"\r\n");
80 }
81 } catch (IOException ioe) {
82 ioe.printStackTrace();
83 } finally {
84 //使用finally块来关闭文件输出流
85 if (fw != null) {
86 fw.close();
87 }
88 }
89 try {
90 File file = new File("shuzu1.txt");
91 if(file.isFile() && file.exists()) {
92 InputStreamReader isr = new InputStreamReader(new FileInputStream(file), "utf-8");
93 BufferedReader br = new BufferedReader(isr);
94 String lineTxt = "";
95 while ((lineTxt = br.readLine()) != null){
96 list.add(Integer.parseInt(lineTxt));
97 }
98 Object[]a=list.toArray();
99 System.out.println((int)a[1]+(int)a[3]);
100 br.close();
101 int sum=a.length;
102 int sum1=0;
103 for(int i=1;i<=sum;i++)
104 {
105 sum1=sum1+i;
106 }
107 int [] b=new int[sum1];
108 int temp1=0;
109 for(int i=0;i<sum;i++)
110 {
111 int temp=0;
112 for(int k=0;k<sum-i;k++)
113 {
114 temp=temp+(int)a[i+k];
115 b[temp1]=temp;
116 temp1++;
117 }
118 }
119 for(int i=0;i<sum1-1;i++)
120 for(int k=0;k<sum1-1-i;k++)
121 {
122 if(b[k]<b[k+1])
123 {
124 int temp2=b[k];
125 b[k]=b[k+1];
126 b[k+1]=temp2;
127 }
128 }
129 System.out.println("最大的子数组和为"+b[0]);
130 } else {
131 System.out.println("文件不存在!");
132 }
133 } catch (Exception e) {
134 System.out.println("文件读取错误!");
135 }
136 }
137 }
138
139 }