陣列中最大的子陣列之和的測試分析

2022-06-30 03:48:09 字數 2791 閱讀 9615

題目要求:陣列中最大的子陣列之和(如下圖),然後進行單元測試和效能分析。

**如下:

class

summaxnum():

deffunction(serf,lists):

max_sum =lists[0]

pre_sum =0

for i in

lists:

if pre_sum <0:

pre_sum =i

else

: pre_sum +=i

if pre_sum >max_sum:

max_sum =pre_sum

return max_sum

import

unittest

class

mytestcase(unittest.testcase):

deftest_something(self):

return

self.assertequal(true, false)

deftest1(self):

ts =summaxnum()

return self.assertequal(ts.function([-2 ,6, -1, 5, 4, -7, 2, 3]),14)

deftest2(self):

ts =summaxnum()

return self.assertequal(ts.function([1, 4, -5, 9, 8, 3, -6]),20)

deftest3(self):

ts =summaxnum()

return self.assertequal(ts.function([-1 ,20 ,-5, 30 ,-4]),45)

deftest4(self):

ts =summaxnum()

return self.assertequal(ts.function([-2 ,-3,-5 ,1 ,-9]),1)

def test5(self):#

這組故意設定錯誤的值

根據測試結果可以看出公測試了5組資料,其中第5組發生了錯誤。

注意:後面由於我的pycharm ide出問題了,換用了spyder編譯環境,對結果沒有影響。

**

class

summaxnum():

deffunction(serf,lists):

max_sum =lists[0]

pre_sum =0

for i in

lists:

if pre_sum <0:

pre_sum =i

else

: pre_sum +=i

if pre_sum >max_sum:

max_sum =pre_sum

return

max_sum

if__name__ == '

__main__':

import

cprofile

cprofile.run(

"summaxnum().function([-2 ,-3,-5 ,1 ,-9])

")

結果:

**:

import

cprofile

cprofile.run(

"suite.addtest(mytestcase('test1'))")

cprofile.run(

"suite.addtest(mytestcase('test2'))")

cprofile.run(

"suite.addtest(mytestcase('test3'))")

cprofile.run(

"suite.addtest(mytestcase('test4'))")

cprofile.run(

"suite.addtest(mytestcase('test5'))

")

結果截圖

陣列中最大的子陣列之和

乙個有n個整數元素的一維陣列 a 0 a 1 a n 1 求子陣列之和的最大值。例子 1,2,3,5,3,2 返回 8 0,2,3,5,1,2 返回 9 9,2,3,5,3 返回 2 需要注意的是,如果考慮到陣列首尾相連,則 1 先按不相連計算出最大值max 2 從尾往頭掃瞄,找出最大值m1,並記錄...

陣列中最大子陣列之和

一 目的 熟悉程式設計風格 自學簡單 python 簡單效能測試 二 程式設計 1 測試工具及注意事項 使用visual studio 2017進行編譯,求陣列中最大陣列之和。注意 1.題目說的是子陣列是連續的 2.題目只要求和,不需要返回陣列的具體位置 3.陣列的元素是整數 2 單元測試配置過程 ...

陣列中最大子陣列之和

採用暴力破解法 三重for迴圈找出所有子陣列進行對比 def maxsubarray array maxsum 0 for i in range 0,len array for j in range i,len array sum 0 for k in range i,j 1 sum sum arr...