求数组最大子数组之和

1.实现求数组最大子数组之和的功能代码

maxarray.py

#用来获得最大子数组之和定义成方法也方便后面的单元测试
def max(a):
    sum = max = 0
    for i in range(len(a)):
        sum += a[i]
        if sum < 0:
            sum = 0
        if max < sum:
            max = sum
    if max == 0:#说明a数组内全是负数
        max = a[0]
        for i in range(1,len(a)):
            if max < a[i]:
                max = a[i]
    return max

 

2.单元测试

maxarraytest.py

import unittest
from 数组的最大子数组之和.maxarray import max
class TestDemo(unittest.TestCase):
    def test_out_1(self):
        a = [1,-2,3,-4,5]
        self.assertEqual(max(a),5)
    def test_out_2(self):
        a = [-5,-1,-3,-6,-8]
        self.assertEqual(max(a),-1)

if __name__ == '__main__':
    unittest.main()

运行结果:

(1)单元测试正确截图:

(2)单元测试错误截图:

 

3.性能分析

利用profile分析相关的独立模块

ncalls:表示函数调用的次数;
tottime:表示指定函数的总的运行时间,除掉函数中调用子函数的运行时间;
percall:(第一个percall)等于 tottime/ncalls;
cumtime:表示该函数及其所有子函数的调用运行的时间,即函数开始调用到返回的时间;
percall:(第二个percall)即函数运行一次的平均时间,等于 cumtime/ncalls;
filename:lineno(function):每个函数调用的具体信息;

运行截图:

posted @ 2021-03-14 09:32  我所希冀的未来  阅读(96)  评论(1)    收藏  举报