本帖最后由 聖手`书生 于 2013-4-6 18:35 编辑
- class ArrayTest4
- {
- public static void main(String[] args)
- {
- // int[] arr = {3,2,1,5,4,2,9};
- // int index = getIndex(arr,2);
- // System.out.println("index="+index);
- int[] arr = {2,4,5,7,8,19,32,45};//8
- int index = getIndex_2(arr,190);
- System.out.println("index="+index);
- public static int getIndex_2(int[] arr,int key)
- {
- int min = 0,max = arr.length-1,mid;
- while(min<=max)
- {
- mid = (max+min)>>1;
- if(key>arr[mid])
- min = mid + 1;
- else if(key<arr[mid])
- max = mid - 1;
- else
- return mid;
- }
- return min;
- }
复制代码 练习:有一个有序的数组,想要将一个元素插入到该数组中,
还要保证该数组是有序的。如何获取该元素在数组中的位置。
现在就是想问大家一下,代码中的mid = (max+min)>>1;右移一位操作,怎么就是相当于(max+min)/2操作,有什么依据。 |
|