题目:给定一个数组,在所有子数组中找到和最大的子数组。
子数组:任意连续个元素。
1. 暴力法:计算每一个 子数组 的和,选出最大的。时间复杂度O(n**3)
# -*-coding:utf-8 -*-
#暴力法求最大子数组
def max_child(arr):
max = 0
x = 0
y = 0
n = len(arr)
for i in range(0,n):
for j in range(i,n):
arr_sum = 0
for k in range(i,j+1):
arr_sum = arr_sum + arr[k]
# print(i,j,arr_sum)
if arr_sum > max :
max = arr_sum
x = i
y = j
print("最大子数组的起始-结束下标", x, y)
return max
arr = [1,2,3,4,5]
print("最大子数组的和:", max_child(arr))
2. 递归法:
选定一个基准,这个最大子数组有三种情况:
第一:在基准左边,那