首页 > 编程语言 > 详细

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

时间:2021-03-14 13:55:46      阅读:36      评论:0      收藏:0      [点我收藏+]

 一 . 数据分析

  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进行性能分析,结果如下

技术分享图片

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

原文:https://www.cnblogs.com/lvjunfeng/p/14531992.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!