forked from pritikmshaw/Python-
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathlargest_subarray.py
More file actions
44 lines (30 loc) · 982 Bytes
/
largest_subarray.py
File metadata and controls
44 lines (30 loc) · 982 Bytes
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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
#Program to find the largest subarray from a given array
import sys
def middle_largest(beg,end,mid,arr):
left_sum = -(sys.maxsize)
i=mid
sum1 = 0
while(i<=mid and i>=beg):
sum1 += arr[i]
if(sum1>left_sum):
left_sum = sum1
i -= 1
j=mid+1
sum1 = 0
right_sum = -(sys.maxsize)
while(j>=mid+1 and j<=end):
sum1 += arr[j]
if(sum1>right_sum):
right_sum = sum1
j += 1
return max([left_sum+right_sum,left_sum,right_sum])
def largest_substring(beg,end,arr):
if(beg==end):
return arr[beg]
left_sub = largest_substring(beg,(beg+end)//2,arr)
right_sub = largest_substring((beg+end)//2+1,end,arr)
entire_array = middle_largest(beg,end,(beg+end)//2,arr)
return max([left_sub,right_sub,entire_array])
#driver code
arr = [13,-3,-25,20,-3,-16,-23,18,20,-7,12,-5,-22,15,-4,7]
print(largest_substring(0,len(arr)-1,arr))