zoukankan      html  css  js  c++  java
  • 返回一个一维整数数组中最大子数组的和

    设计思想:在原来最大数组的基础之上,将数组先扩展为原来的两倍就是将原来的数组复制然后连接到后面。再进行输入数字个数次循环,每次循环都扫描起点后输入数字个数个数字。计算数组和,并不断更新最大数组合

    程序源代码:

    package test;
    
    import java.util.Scanner;
    
    public class Test {
        public static void main(String[] args)
        {
            Scanner in=new Scanner(System.in);
            System.out.print("请输入数组长度:");
            int l=in.nextInt();//用户输入数组长度
            
            int[] shuzu =new int [l*2];
            int number_hezuidazhi=0;
            
    
            System.out.println("请依次输入数字");
            for(int i=0;i<l;i++)
            {
                shuzu[i]=in.nextInt();
                shuzu[i+l]=shuzu[i];
            }
            
            int number_he=shuzu[0];
            
            for(int m=0;m<l;m++)//进行输入数字个数次循环
            { 
                for(int n=m;n<m+l;n++)//每次向后扫描输入数字个数的数字
                {
                    number_he = number_he + shuzu[n];
                
                    if(number_hezuidazhi<number_he)//如果数组和大于最大数组和,则更新
                    {
                        number_hezuidazhi=number_he;
                    }
                
                    if(number_he<0)//如果数组和为小于零,那么抛弃从零开始
                    {
                        number_he=0;
                    }
                }
                number_he = 0;//一次循环更新一次数组和
            }
            System.out.println("最大数组和为"+ number_hezuidazhi);
            in.close();
        }
    
    }

    结果截图:

    结果分析:输入-1 2 3 -4 6

    那么在这个首尾相连的数组中,应该是抛弃-4其他所有数字组成的集合最大。

    程序中将数组变为-1 2 3 -4 6 -1 2 3 -4 6

    第一次扫描(-1 2 3 -4 6 )-1 2 3 -4 6

    第二次扫描 -1 (2 3 -4 6 -1) 2 3 -4 6

    。。。。

    每次都是上次最大数组的算法

    总结:程序时间复杂度变成O(n*n);没有办法一次实现,就将数组变化进行多次遍历。

  • 相关阅读:
    mac配置ls命令显示不同文件不同颜色
    nginx安装
    PostgreSQL的架构
    /etc/sysctl.conf配置文件
    pg_hba.conf配置文件
    gitlab不支持mysql,这就是我学习PostgreSQL的原因
    postgresql安装
    git的三个区域比较
    mysql备份时的快照原理
    mysql密码管理
  • 原文地址:https://www.cnblogs.com/sisi-job/p/5380062.html
Copyright © 2011-2022 走看看