今天碰到一個非常非常簡單的面試題,但是我還是在規定的時間沒有寫出來,藉此紀念一下。
/*
面試題:
給定一個有序的數組,如果往該數組中存儲一個元素,並保證這個數組還是有序的,那麼這個元素存儲的角標如何獲取
*/
class ArrayDemo
{
public static void main(String[] args)
{
int[] arr = {2,5,7,12,15,17,19,30,39,48,89,90};
int index = halfSearch(arr,1);
System.out.println(index);
}
public static int halfSearch(int[] arr,int key)
{
int max,min,mid;
max = arr.length - 1;
min = 0;
while(min <= max)
{
mid = (max + min) / 2;
if(key > arr[mid])
min = mid + 1;
else if(key < arr[mid])
max = mid - 1;
else
return mid;
}
return min;
}
}