数组中最大的子数组之和,并对代码进行单元测试以及性能分析

 一 . 数据分析

  1.题目要求

  • 输入, 一个数组,和它的大小
  • 输出,这个数组中最大(连续)子数组之和
  • 例如

 

  2.代码实现

 1 package com;
 2 import org.junit.Test;
 3 public class Test1 {
 4     @Test
 5     public void test1(){
 6         int[] a={-2,3,-1,2,-6};
 7         int[] b=new int[100];
 8         int n=5;
 9         int q=0,p;
10         //计算每个相邻种类的和
11         for(int i=0;i<n;i++){
12             p=0;
13             for(int j=i;j<n;j++){
14                 p=p+a[j];
15                 b[q]=p;
16                 q=q+1;
17             }
18         }
19         //计算出所有结果的种类数量
20         int s=(n*n+n-2)/2;
21         //排序 从大到小
22         for(int i=0;i<s-1;i++){ //数组中有count个数据,要比count-1轮
23             for(int j=i+1;j<s-1;j++){
24                 //每轮拿数组中当前轮元素后面的所有元素
25                 if(b[j]>b[i]){//如果后面的数大于等于当前轮元素就交换两个元素的值
26                     int temp = b[i];
27                     b[i]= b[j];
28                     b[j]= temp;
29                 }
30             }
31         }
32         //输出从大到小的结果和集合
33 //        for(int i=0;i<s;i++){
34 //            System.out.println("\t"+b[i]);
35 //        }
36         System.out.println("最大的和是\n"+b[0]);
37     }
38 }

  3.运行结果

 

二 . 单元测试

这里需要用maven工具,它是基于项目对象模型,里面有许多jar包,我采用的是junit测试工具对以上代码进行测试,测试过程如下:

1.创建一个项目,在src包小马创建一个包(com),然后在com包下面创建两个类。

 

2.在str类中写入的是java源代码,Test1类作为测试类

 
 1 package com;
 2 import org.junit.Test;
 3 public class Test1 {
 4     @Test
 5     public void test1(){
 6         int[] a={-2,3,-1,2,-6};
 7         int[] b=new int[100];
 8         int n=5;
 9         int q=0,p;
10         //计算每个相邻种类的和
11         for(int i=0;i<n;i++){
12             p=0;
13             for(int j=i;j<n;j++){
14                 p=p+a[j];
15                 b[q]=p;
16                 q=q+1;
17             }
18         }
19         //计算出所有结果的种类数量
20         int s=(n*n+n-2)/2;
21         //排序 从大到小
22         for(int i=0;i<s-1;i++){ //数组中有count个数据,要比count-1轮
23             for(int j=i+1;j<s-1;j++){
24                 //每轮拿数组中当前轮元素后面的所有元素
25                 if(b[j]>b[i]){//如果后面的数大于等于当前轮元素就交换两个元素的值
26                     int temp = b[i];
27                     b[i]= b[j];
28                     b[j]= temp;
29                 }
30             }
31         }
32         //输出从大到小的结果和集合
33 //        for(int i=0;i<s;i++){
34 //            System.out.println("\t"+b[i]);
35 //        }
36         System.out.println("最大的和是\n"+b[0]);
37     }
38 }

3.在pom.xml中写入对应依赖,写入之前先下载junit的jar包工具,代码如下

 

4.测试结果

这里只是测试了一组数据

三 . 性能分析

1.要进行性能分析,首先下载性能分析工具JProfiler

  1)

    

  2)

    

2.下载完成后,进行Profiler软件地址配置

3.使用JProfiler进行性能分析,结果如下

posted @ 2021-03-14 12:05  鲁班三号  阅读(154)  评论(2)    收藏  举报