package com.interview.algorithms.array;
/**
* Created with IntelliJ IDEA.
* User: stefanie
* Date: 9/18/14
* Time: 2:21 PM
*/
public class C4_60_PartialSortedArraySearch {
public static int find(int[] array, int key){
int split = findSplit(array);
int index = -1;
if(split != -1){
index = find(array, key, 0, split - 1);
if(index == -1) index = find(array, key, split, array.length - 1);
}
return index;
}
private static int findSplit(int[] array){
boolean isAsc = array[0] <= array[1];
for(int i = 0; i < array.length - 1; i++){
if((isAsc && array[i] > array[i+1]) || (!isAsc && array[i] < array[i-1]))
return i+1;
}
return -1;
}
private static int find(int[] array, int key, int low, int high){
if(low <= high){
int mid = (low + high) / 2;
if(key == array[mid]) return mid;
else if(key > array[mid]) return find(array, key, mid + 1, high);
else return find(array, key, low, mid - 1);
}
return -1;
}
}