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