zoukankan      html  css  js  c++  java
  • 定义一个数组返回最大子数组的值(2)

    第二次项目添加了文件的输入、大数据的读取以及数据的控制,比第一次的操作更复杂了;

    文件的读入,读取是固定的代码,这里就不多说了,然后是数据的判断(是否为整数)数据读出时我采用字符形式读取,然后以空格为分界线,将不同的数据存入数组中,再转换为整数,转换的时候采用try()判断是否为整数,不是整数则跳出程序,是整数则继续运行;

    当数据过大时会有延时(存在崩盘的可能),所以目前只读取有限数据100000;

    然后利用读出的数组进行计算最大子数组;

    以下是程序原代码:

    package 数组;
    import java.io.BufferedReader;
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileNotFoundException;
    import java.io.FileReader;
    import java.io.FileWriter;
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.InputStreamReader;
    import java.util.Random;
    import java.util.Scanner;
    import javax.sound.sampled.Line;
    public class main {

     public static void main(String[] args) {
      // TODO Auto-generated method stub
      final  int N=100000;//可读取的数据量N
      main c=new main();
    int[] A=new int[N];
    String[] B=new String[1];
    String C=new String();
    String[] D=new String[10];
    Scanner in=new Scanner(System.in);
    A=c.randomCommon(0,294967295,N);
    //c.write(A,N);
    //
     int q;
    // 
    // B=c.read();
    // C=B[0];
    // D=C.split(" ");
    // for(int n=0;n<N;n++)
    // {
    //  try {
    //   A[n]= Integer.parseInt(D[n]);
    //  } catch (NumberFormatException e) {
    //   System.out.println("输入的第"+(n+1)+"个不是整数(或范围过大):"+D[n]);
    //     // e.printStackTrace();
    //      System.exit(0);
    //  }
    //  
    // }
    // System.out.println(A[6]);
     
     q=c.max(A,N);
     System.out.println(q);
     }
    /**
     * @param A
     * @param n
     * @return
     */
    public int max(int[] A,int n)
    {
     int end=A[0];
     int sum=0;
     for(int i=0;i<n;i++)
     {sum=A[i];
      //end=A[i];//存储子数组中的最大值
      for(int j=i;j<n;j++)
      {
       sum+=A[j];
       if(sum>end)
        end=sum;
       
       
      }
      
     }
     return end;
    }
    public String[] read()//读出文件
    {
      String[] w=new String[10];
     Scanner sc = null;
     try {
      sc = new Scanner(new FileReader("D:\shuzu.txt"));
     } catch (FileNotFoundException e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
     }
     String line=null;
     while((sc.hasNextLine()&&(line=sc.nextLine())!=null))
     { }
     w[0]=line;
     return w;
    }
    /**
     * 随机指定范围内N个不重复的数
     * 最简单最基本的方法
     * @param min 指定范围最小值
     * @param max 指定范围最大值
     * @param n 随机数个数
     */   
    public int[] randomCommon(int min, int max, int n){ 
        if (n > (max - min + 1) || max < min) { 
               return null; 
           } 
        int[] result = new int[n]; 
        int count = 0; 
        while(count < n) { 
            int num = (int) (Math.random() * (max - min)) + min; 
            boolean flag = true; 
            for (int j = 0; j < n; j++) { 
                if(num == result[j]){ 
                    flag = false; 
                    break; 
                } 
            } 
            if(flag){ 
                result[count] = num; 
                count++; 
            } 
        } 
        return result; 

    public void write(int[] A,int a)//写入文件
    {
     File file = new File("D:\shuzu.txt");
        try {
             FileWriter writer = new FileWriter(file, true);
             for(int i=0;i<a;i++)
             {writer.write(A[i]+" ");}
           
             writer.write(" ");
             writer.close();
        } catch (Exception ex) {
             ex.printStackTrace();
             ex.getMessage();
        }
    }
    }

  • 相关阅读:
    markdown语法
    GIT基本操作
    函数rest参数和扩展
    axios基础介绍
    Vue-Resource的使用
    Vue-router的介绍
    Vue2.0+组件库总结
    Vue 项目de一些准备工作
    VUE.js入门学习(5)- 插槽和作用域插槽
    VUE.js入门学习(4)-动画特效
  • 原文地址:https://www.cnblogs.com/zql98/p/10539920.html
Copyright © 2011-2022 走看看