题目:求一组数组中最大的子数组之和
一、程序代码
该实验使用的是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、结果如下
内存截图

总体概览:

浙公网安备 33010602011771号