/*
对折半查找法的扩展应用
面试题:
给定一个有序的数组,如果往该数组中存储一个元素,并保证这个数组还是有序的,
那么该元素的存储的角标为如何获取。
*/
class InsertToArrary1
{
public static void main(String[] args)
{
int[] arr = {13,15,19,28,33,45,78,106};
int index = insertToArrary(arr,50);
System.out.println("index = "+ index);
}
public static int insertToArrary(int[] arr, int key)
{
int max,min,mid;
min = 0;
max = arr.length-1;
while(min<=max)
{
mid = (min+max)/2;
if(key>arr[mid])
min = mid+1;
else if(key<arr[mid])
max = mid-1;
else
return mid;
//在min<=max的情况下,遍历比较的最后结果是min=max,然后返回元素插入的位置
}
return min;
//最后min>max的情况下,返回min值,就是元素插入的位置
}
}
最后注意类名拼写,如果类名和文件名相同,一定要注意不要发生拼写错误,本人就是类名拼写少个r,在执行javac命令时运行正常,运行java命令时报错,抓狂了好久才找到错误。