Interview Questions

search a number in a sorted array of the form....

Microsoft Interview Questions and Answers


(Continued from previous question...)

64. search a number in a sorted array of the form....

Question:
search a number in a sorted array of the form
eg: 4 5 6 1 2 3
in O(logn).




maybe an answer:

int binarySearch(int a[], int key, int low, int high)
{
if(low > high)
return -1;
int mid = (low + high) / 2;
if( key == a[mid] )
return mid;

int result(-1);
if( key < a[mid] )
{
if( key >= a[low] && key <= a[mid-1] )
result = binarySearch(a, key, low, mid-1);
else
result = binarySearch(a, key, mid+1, high);
} else {
if( key >= a[mid+1] && key <= a[high] )
result = binarySearch(a, key, mid+1, high);
else
result = binarySearch(a, key, low, mid-1);
}

return result;
}


maybe an answer2:

int search(int a[],int l,intr,int x)
{
while(l<=r)
{
mid=l+(r-l)/2;
if(a[mid]==x)
retun mid;
else if(a[l]<=a[mid])
{
if(x>a[mid])
l=mid+1;
else if(x>=a[l])
r=mid-1;
else
l=mid+1;
}
else if(x<a[mid])
u=mid-1;
else if(x<=a[r])
l=mid+1;
else
u=mid-1;
}
}



maybe an answer3:

int search (char * a , char x) {

int low=0;
int up =sizeof(a)-1;

int mid= low+up-low/2;
while(low<=up) {
if (x==a[mid]) {
return x;
}
if(a[low] < a[mid]){
if (x<a[mid])
up=mid-1;
else
low=mid+1;
}
else if(x > a[mid])
r=mid-1;
else
l=mid+1;

}

}

(Continued on next question...)

Other Interview Questions