本帖最后由 施大勇 于 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;
- }
- }
复制代码 |