The code is not working due to time limit exceeded problem. How can the code be optimised? The code is as follows-
#include
using namespace std;
int num_search(int a[],int start,int end,int key)
{
int mid,index=-1;
while(start<=end)
{
mid=(start+end)/2;
if(key==a[mid])
{
index=mid;
}
else if(a[start]>=a[mid])
{
if(key>=a[mid] && key<a[end])
num_search(a,mid+1,end,key);
else
num_search(a,start,mid-1,key);
}
else
{
if(key>=a[start] && key<a[mid])
num_search(a,start,mid-1,key);
else
num_search(a,mid+1,end,key);
}
}
return index;
}
int main() {
int i,n;
cin>>n;
int a[n];
for(i=0;i<n;i++)
{
cin>>a[i];
}
int key;
cin>>key;
cout<<num_search(a,0,n-1,key)<<endl;
return 0;
}