题目:求一组数组中最大的子数组之和

一、程序代码

该实验使用的是Java语言,在IDEA工具上运行。

public class maxSubArray {
    public static int max(int m,int n){
        return m>n ? m :n;
    }

    public static int maxSubArrayMethodFour(int arr[]){
        int n=arr.length;
        int nAll=arr[0];     //有n个数字数组的最大子数组和
        int nEnd=arr[0];     //有那个数字数组包含最后一个元素的子数组的最大和

        for(int i=1;i<n;i++){
            nEnd=max(nEnd+arr[i],arr[i]);
            nAll=max(nEnd,nAll);
        }

        return nAll;
    }

    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        int number=Integer.parseInt(sc.next());
        //number表示数组的长度
        int[] num=new int[number];

        //对数组元素循环赋值
        for(int i=0;i<number;i++){
            num[i]=(int)sc.nextInt();
        }
        System.out.println(maxSubArrayMethodFour(num));

    }

}

二、单元测试

1、采用的是junit测试工具对以上代码进行测试

2、将函数放入main文件中,将测试代码放入test文件中。

函数代码如下:

public class Test1 {
    Funcation maxSumOfSubArray = new Funcation();
 
    @Test
    public void test1(){
        int []Array={0,0,0,0,0};
        int maxSum = maxSumOfSubArray.maxSum(Array);
        System.out.println(maxSum);
    }
 
    @Test
    public void test2(){
        int []Array={1, 5, 8, 9, 6};
        int maxSum = maxSumOfSubArray.maxSum(Array);
        System.out.println(maxSum);
    }
 
    @Test
    public void test3(){
        int []Array={1,2,-4,0,-7};
        int maxSum = maxSumOfSubArray.maxSum(Array);
        System.out.println(maxSum);
    }
 
    @Test
    public void test4(){
        int []Array={-6,-7,-8,-2,-1};
        int maxSum = maxSumOfSubArray.maxSum(Array);
        System.out.println(maxSum);
    }
 
    @Test
    public void test5(){
        int []Array={1,-4,-7,6,-9};
        int maxSum = maxSumOfSubArray.maxSum(Array);
        System.out.println(maxSum);
    }
 
    @Test
    public void test11(){
        int []Array={1,9,-8,-7,10};
        int maxSum = maxSumOfSubArray.maxSum(Array);
        System.out.println(maxSum);
    }
 
    @Test
    public void test21(){
        int []Array={4,49,0,9,1,-9,-8};
        int maxSum = maxSumOfSubArray.maxSum(Array);
        System.out.println(maxSum);
    }
 
    @Test
    public void test31(){
        int []Array={-7,-9,-5,1,2,3,4};
        int maxSum = maxSumOfSubArray.maxSum(Array);
        System.out.println(maxSum);
    }
 
    @Test
    public void test41(){
        int []Array={10,23,45,-87,98,76,-100};
        int maxSum = maxSumOfSubArray.maxSum(Array);
        System.out.println(maxSum);
    }
 
    @Test
    public void test51(){
        int []Array={1,2,-3,-4,-1,-2,-9};
        int maxSum = maxSumOfSubArray.maxSum(Array);
        System.out.println(maxSum);
    }
}

3、测试截图

 

 

 三、性能分析

使用的是JProfiler性能分析工具,性能分析过程如下:

1、先下载一个JProfiler工具

2、在idea下载一个JProfiler插件

 

 3、配置JProfiler

 

 

 

 4、结果如下

内存截图

 

总体概览:

 

 

posted on 2021-03-14 13:37  琋瑒  阅读(86)  评论(1)    收藏  举报