diff --git a/Divide_And_Conquer/max_subarray.py b/Divide_And_Conquer/max_subarray.py new file mode 100644 index 00000000..52530655 --- /dev/null +++ b/Divide_And_Conquer/max_subarray.py @@ -0,0 +1,37 @@ +def find_max_crossing_subarray(arr, low, mid, high): + left_sum = -1 + sum = 0 + for i in range(mid, 0, -1): + sum += arr[i] + if sum > left_sum: + left_sum = sum + + right_sum = -1 + sum = 0 + for j in range(mid+1, high + 1): + sum += arr[j] + if sum > right_sum: + right_sum = sum + + return (left_sum + right_sum) + +def find_max_subarray(arr, low, high): + + if high == low: + return arr[low] + + else: + mid = (low + high) // 2 + left_sum = find_max_subarray(arr, low, mid) + right_sum = find_max_subarray(arr, mid+1, high) + cross_sum = find_max_crossing_subarray(arr, low, mid, high) + + if left_sum >= right_sum and left_sum >= cross_sum: + return left_sum + elif right_sum >= left_sum and right_sum >= cross_sum: + return right_sum + else: + return cross_sum + +arr = [13, -3, -25, 20, -3, -16, -23, 18, 20, -7, 12, -5, -22, 15, -4, 7] +print(find_max_subarray(arr, 0, len(arr) - 1)) \ No newline at end of file diff --git a/PULL_REQUEST_TEMPLATE.md b/PULL_REQUEST_TEMPLATE.md index cf3586ca..d3fbde86 100644 --- a/PULL_REQUEST_TEMPLATE.md +++ b/PULL_REQUEST_TEMPLATE.md @@ -1,4 +1,3 @@ -``` # Description Please include a summary of the change and which issue is fixed. Please also include relevant motivation and context. Include a proper title of the Script that is being entered. @@ -12,5 +11,4 @@ Please delete options that are not relevant. - [ ] New Script - [ ] New Category (Is any new category being made to accommodate this script) - [ ] Bug fix (non-breaking change which fixes an issue) -- [ ] New feature (non-breaking change which adds functionality) -``` +- [ ] New feature (non-breaking change which adds functionality) \ No newline at end of file