-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathKadanes.py
26 lines (24 loc) · 953 Bytes
/
Kadanes.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
def max_subarray_sum(arr):
max_so_far = float('-inf')
max_ending_here = float('-inf')
starting_index = 0
ending_index = 0
for i in range(len(arr)):
change_starting_index = False
if arr[i] < (max_ending_here + arr[i]):
max_ending_here = max_ending_here + arr[i]
else:
max_ending_here = arr[i]
change_starting_index = True
if max_ending_here > max_so_far:
max_so_far = max_ending_here
if change_starting_index:
starting_index = i
ending_index = i
print(f"\n input array: {arr}")
print(f"\n max subarray: {arr[starting_index:ending_index+1]}")
print(f"max subarray sum: {max_so_far}")
print(f"\n starting index: {starting_index}")
print(f" ending index: {ending_index}\n")
input_array = [-2, 1, -3, 4, -1, 2, 1, -5, 4]
max_subarray_sum(input_array)