Given sorted integer array and a given value we have to find two elements which will sum up to a given value.
Since it is a sorted array our job is so easy.
For example, array a is having n element in sorted order
A[0]<A[1]<A[2]<........<A[n-1];
From this we can deduce that,
A[0]+A[1]<A[0]+A[2]<A[0]+A[3].......;
A[0]+A[n-1]<A[1]+A[n-1]<.....<A[n-2]+A[n-1];
Compare from the extreme summations with the given value and increase or decrease the indexes according to the comparison.
Since it is a sorted array our job is so easy.
For example, array a is having n element in sorted order
A[0]<A[1]<A[2]<........<A[n-1];
From this we can deduce that,
A[0]+A[1]<A[0]+A[2]<A[0]+A[3].......;
A[0]+A[n-1]<A[1]+A[n-1]<.....<A[n-2]+A[n-1];
Compare from the extreme summations with the given value and increase or decrease the indexes according to the comparison.
Int a[SIZE]; Int a[SIZE]; int n; void findTwoElementsToN(int a[],int n){ int i=0; int j=sizeof(a)/sizeof(int) -1; int sum=0; if(i<j){ sum=a[i]+a[j]; if(sum<n){ i++; }else if(sum>n){ j--; }else{ printf(“%d and %d”,a[i],a[j]); } } }
No comments:
Post a Comment