|
| 1 | +""" |
| 2 | +author : Mayank Kumar Jha (mk9440) |
| 3 | +""" |
| 4 | + |
| 5 | +import time |
| 6 | +import matplotlib.pyplot as plt |
| 7 | +from random import randint |
| 8 | +def find_max_sub_array(A,low,high): |
| 9 | + if low==high: |
| 10 | + return low,high,A[low] |
| 11 | + else : |
| 12 | + mid=(low+high)//2 |
| 13 | + left_low,left_high,left_sum=find_max_sub_array(A,low,mid) |
| 14 | + right_low,right_high,right_sum=find_max_sub_array(A,mid+1,high) |
| 15 | + cross_left,cross_right,cross_sum=find_max_cross_sum(A,low,mid,high) |
| 16 | + if left_sum>=right_sum and left_sum>=cross_sum: |
| 17 | + return left_low,left_high,left_sum |
| 18 | + elif right_sum>=left_sum and right_sum>=cross_sum : |
| 19 | + return right_low,right_high,right_sum |
| 20 | + else: |
| 21 | + return cross_left,cross_right,cross_sum |
| 22 | + |
| 23 | +def find_max_cross_sum(A,low,mid,high): |
| 24 | + left_sum,max_left=-999999999,-1 |
| 25 | + right_sum,max_right=-999999999,-1 |
| 26 | + summ=0 |
| 27 | + for i in range(mid,low-1,-1): |
| 28 | + summ+=A[i] |
| 29 | + if summ > left_sum: |
| 30 | + left_sum=summ |
| 31 | + max_left=i |
| 32 | + summ=0 |
| 33 | + for i in range(mid+1,high+1): |
| 34 | + summ+=A[i] |
| 35 | + if summ > right_sum: |
| 36 | + right_sum=summ |
| 37 | + max_right=i |
| 38 | + return max_left,max_right,(left_sum+right_sum) |
| 39 | + |
| 40 | + |
| 41 | +if __name__=='__main__': |
| 42 | + inputs=[10,100,1000,10000,50000,100000,200000,300000,400000,500000] |
| 43 | + tim=[] |
| 44 | + for i in inputs: |
| 45 | + li=[randint(1,i) for j in range(i)] |
| 46 | + strt=time.time() |
| 47 | + (find_max_sub_array(li,0,len(li)-1)) |
| 48 | + end=time.time() |
| 49 | + tim.append(end-strt) |
| 50 | + print("No of Inputs Time Taken") |
| 51 | + for i in range(len(inputs)): |
| 52 | + print(inputs[i],'\t\t',tim[i]) |
| 53 | + plt.plot(inputs,tim) |
| 54 | + plt.xlabel("Number of Inputs");plt.ylabel("Time taken in seconds ") |
| 55 | + plt.show() |
| 56 | + |
| 57 | + |
| 58 | + |
| 59 | + |
0 commit comments