search element in a circular sorted array
int main() {
int A[] = {12,14,18,21,3,6,8,9};
int n = 8;
int x = 6;
int index = binarySearch(A,n,x);
if(index == -1){
printf("%d not found in the array",x);
}
else{
printf("%d is found at index %d",x,index);
}
return 0;
}
int binarySearch(int A[],int n, int x){
int low = 0,high = n-1;
while(low <= high){
int mid = (low + high)/2;
if(x == A[mid])
return mid;
if(A[mid]<=A[high]){
if(x>A[mid] && x<=A[high])
low = mid+1;
else
high = mid-1;}
else{
if(x>=A[low] && x <A[mid])
high = mid-1;
else
low = mid+1;}
}
return -1;
}
int A[] = {12,14,18,21,3,6,8,9};
int n = 8;
int x = 6;
int index = binarySearch(A,n,x);
if(index == -1){
printf("%d not found in the array",x);
}
else{
printf("%d is found at index %d",x,index);
}
return 0;
}
int binarySearch(int A[],int n, int x){
int low = 0,high = n-1;
while(low <= high){
int mid = (low + high)/2;
if(x == A[mid])
return mid;
if(A[mid]<=A[high]){
if(x>A[mid] && x<=A[high])
low = mid+1;
else
high = mid-1;}
else{
if(x>=A[low] && x <A[mid])
high = mid-1;
else
low = mid+1;}
}
return -1;
}
Comments
Post a Comment