Note: Question is pretty simple but there are lots of test cases to cover if you find any test case is not working , feel free comment.

import java.util.*;

import java.lang.*;

import java.io.*;

/* Name of the class has to be "Main" only if the class is public. */

class Ideone

{

public static void main (String[] args) throws java.lang.Exception

{

int x[]=new int[]{2, 6, 8, 10,13};

int a=11;

System.out.println(search(x,a));

}

public static int search(int x[], int a)

{

if(x==null || x.length==0) return 0;

int pos=-1;

int l=0;

int length=x.length;

int r=length-1;

if(a<x[0])

return 0;

if(a>x[length-1])

return length;

if(r<=0)

return 0;

if(1==length){

if(a>x[0])

return 1;

else if(a<=x[0])

return 0;

}

// [2, 6, 8, 10] values 0 , 7 , 5 , 9 , 11

if(l<=r)

{

while(l<=r)

{

int mid=l+((r-l)/2);

System.out.println("l= " + l + " mid = " + mid + " r= " + r);

if(x[mid]==a)

return mid;

else if(x[mid] > a && x[mid-1]<a)

return mid;

else if(x[mid] < a && x[mid+1]> a)

return mid+1;

else if(a<=x[mid-1])

r=mid-1;

else if(a>=x[mid+1])

l=mid+1;

}

}

return pos;

}

}

Run Here http://ideone.com/YuA70F

TC O(logn)

SC O(1)