public static void Main()
int [] array = {3,4,5,6,1,2};
public static int Find(int [] array, int key)
int pivotIndex = FindPivot(array);
if(array[pivotIndex] == key)
else if(pivotIndex == -1)
keyAtIndex = BinarySearch(array,0, array.Length-1, key);
keyAtIndex = BinarySearch(array,0,pivotIndex-1, key);
keyAtIndex = BinarySearch(array,pivotIndex+1,array.Length-1,key);
public static int FindPivot(int []array)
for(int i=1; i<array.Length; i++)
public static int BinarySearch(int [] array, int low, int high, int key)
int mid = low + (high-low)/2;
else if(array[mid] < key)
else if(array[mid] > key)