网易云课堂《数据结构》最大子列和问题的python实现(地址:http://mooc.study.163.com/learn/1000033001?tid=2001462004#/learn/content?type=detail&id=2001778303)
首先声明create_sequence(num)函数来创建一个长度为num的list。
1.def create_sequence(num):
2. i = 0
3. sequence = []
4. while i < num:
5. sequence.append(random.randrange(-20,20))
6. i += 1
7. return sequence,num
算法1:粗暴的比较所有子列的和来找到最大值,算法复杂度O(n3)
1.#算法1遍历所有子列后记录最大子列
2.def algorithm1(sequence,num):
3. start_time = time.clock()
4. thisSum = 0 #记录当前子列和
5. maxSum = 0 #记录最大子列和
6. i = 0
7. j = 0
8. k = 0
9. while i < num:
10. j = i
11. while j < num:
12. thisSum = 0
13. k = i
14. while k <= j:
15. thisSum += sequence[k]