PROBLEM STATEMENT :
Find number in a circularly sorted array.
SOLUTION :
#include <iostream.h>
#include <cstdio>
using namespace std;
int main()
{
int target;
int a1[]={6,7,8,9,1,2,3};
int a[]={3,1,9,8,7,6,5};
cout<<"\n\nEnter number you want to search : ";
cin>>target;
int min=0;
int max=sizeof(a)/sizeof(int)-1;
while( min <= max && min >=0 && max <=sizeof(a)/sizeof(int)-1)
{
int mid =(min+max)/2;
if(a[mid] == target)
{
cout<<"Found at index "<<mid;
exit(0);
}
else if(a[mid] >= a[min])
{
if(a[min] <= target && target <= a[mid])
{
max=mid-1;
}
else
{
min=mid+1;
}
}
else if(a[mid] <= a[max])
{
if(a[mid] <= target && target <= a[max])
{
min=mid+1;
}
else
{
max=mid-1;
}
}
}
}
No comments:
Post a Comment