黑马程序员技术交流社区
标题:
Arrays类中的二分查找的小问题?
[打印本页]
作者:
施大勇
时间:
2013-8-18 18:21
标题:
Arrays类中的二分查找的小问题?
本帖最后由 施大勇 于 2013-9-28 15:35 编辑
//想在一个数组中确定一个将要插入的数据的位置?而Arrays中提供的方法返回值是不对的。为何?
import java.util.Arrays;
public class ArrayTest3 {
/**
* 折半查找。
* 并自定义一个自定义的折半查找方法,要了解折半查找的过程。
*/
public static void main(String[] args) {
// 用JAVA已经定义好的方法。
/*
* Arrays类中提供了大量的二分查找和排序方法,可以返回一个指定的元素的索引,也可以返回一个元素的将插入位置。
* 插 入索引应取决对值并减1。
*
* Arrys提供的二分查找用查将要提供的索引位置时并不完全是下确的,还需要进一步转换。
* */
int [] arr={1,10,45,89};
int index=Math.abs(Arrays.binarySearch(arr,100))-1;
System.out.println("index="+index);
/*
* 下面定义一个自定义的二分查找。
* */
int index1= binarySearch(arr,100) ;
System.out.println("index="+index1);
}
public static int binarySearch(int []arr,int i){
int min,max,mid;
min=0;
max=arr.length-1;
while (min<=max){
mid=(min+max)/2;
if (i>arr[mid])
min=mid+1;
else if (i<arr[mid])
max=mid-1;
else
return mid;
}
return min;
}
}
复制代码
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2