连续数组中最大子数组之和
一、目的
熟悉编程风格
自学简单C++代码
简单性能测试
二、编程
主函数:
int main() { int arry[10000]; int Length = 0, i; cout << "输入数组的大小" << endl; cin >> Length; cout << "依次输入数组的值" << endl; for (i = 0; i < Length; i++) cin >> arry[i]; int len = sizeof(arry) / sizeof(int); //cout<<len<<endl; int sum = FindGreatestSumOfSubArray(arry, len); cout << "最大子序列和:" << sum << endl; return 0; }
求和函数:
int FindGreatestSumOfSubArray(int arry[], int len) { if (arry == NULL || len <= 0) return -1; int currSum = 0;//保存当前最大和 int greatestSum = -10000;//保存全局最大和 for (int i = 0; i < len; i++) { if (currSum < 0)//如果当前最大和为负数,则舍弃前面的负数最大和,从下一个数开始计算 { currSum = arry[i]; } else currSum += arry[i];//如果当前最大和不为负数则加上当前数 if (currSum > greatestSum)//如果当前最大和大于全局最大和,则修改全局最大和 { greatestSum = currSum; } } return greatestSum; }
三、单元测试
使用VS2017进行工程项目的单元测试
配置过程:
解决方案----->右键----->添加----->新建项目----->本机单元测试项目

测试项目的名称随便取
测试项创建成功后需要在测试项中引用需要测试的项目
测试项----->右键----->添加----->引用

配置完成后编写实现代码:
#include "pch.h" #include "CppUnitTest.h" #include "..\MaxArray\MaxArray.cpp" using namespace Microsoft::VisualStudio::CppUnitTestFramework; namespace MaxArrayUnitTest1 { TEST_CLASS(MaxArrayUnitTest1) { public: TEST_METHOD(TestMethod1) { int test1[8] = { 1, -2, 3, 5, -3, 6, 1, -1 }; Assert::AreEqual(12,FindGreatestSumOfSubArray(test1, 8)); int test2[5] = { 1,-2,6,-5,9 }; Assert::AreEqual(10, FindGreatestSumOfSubArray(test2, 5)); } }; }
运行结果:

四、性能分析
CPU使用率

内存使用率:


浙公网安备 33010602011771号