Skip to content

Commit 0458742

Browse files
committed
created divide_and_conquer folder and added max_sub_array_sum.py under it (issue TheAlgorithms#817)
1 parent 3657aed commit 0458742

File tree

2 files changed

+67
-74
lines changed

2 files changed

+67
-74
lines changed

Diff for: divide_and_conquer/max_sub_array_sum.py

+67
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
def max_sum_from_start(array):
2+
3+
""" This function finds the maximum contiguous sum of array from 0 index
4+
5+
Parameters :
6+
array (list[int]) : given array
7+
8+
Returns :
9+
max_sum (int) : maximum contiguous sum of array from 0 index
10+
11+
"""
12+
array_sum = 0
13+
max_sum = float("-inf")
14+
for num in array:
15+
array_sum += num
16+
if array_sum > max_sum:
17+
max_sum = array_sum
18+
return max_sum
19+
20+
21+
def max_cross_array_sum(array, left, mid, right):
22+
23+
""" This function finds the maximum contiguous sum of left and right arrays
24+
25+
Parameters :
26+
array, left, mid, right (list[int], int, int, int)
27+
28+
Returns :
29+
(int) : maximum of sum of contiguous sum of left and right arrays
30+
31+
"""
32+
33+
max_sum_of_left = max_sum_from_start(array[left:mid+1][::-1])
34+
max_sum_of_right = max_sum_from_start(array[mid+1: right+1])
35+
return max_sum_of_left + max_sum_of_right
36+
37+
38+
def max_sub_array_sum(array, left, right):
39+
40+
""" This function finds the maximum of sum of contiguous sub-array using divide and conquer method
41+
42+
Parameters :
43+
array, left, right (list[int], int, int) : given array, current left index and current right index
44+
45+
Returns :
46+
int : maximum of sum of contiguous sub-array
47+
48+
"""
49+
50+
""" base case:
51+
array has only one element"""
52+
if left == right:
53+
return array[right]
54+
55+
""" Recursion"""
56+
57+
mid = (left + right) // 2
58+
left_half_sum = max_sub_array_sum(array, left, mid)
59+
right_half_sum = max_sub_array_sum(array, mid + 1, right)
60+
cross_sum = max_cross_array_sum(array, left, mid, right)
61+
return max(left_half_sum, right_half_sum, cross_sum)
62+
63+
64+
array = [-2, -5, 6, -2, -3, 1, 5, -6]
65+
array_length = len(array)
66+
print("Maximum sum of contiguous subarray:", max_sub_array_sum(array, 0, array_length - 1))
67+

Diff for: strings/Boyer_Moore_Search.py

-74
This file was deleted.

0 commit comments

Comments
 (0)