2015年05月22日 Array 浏览(564) 收藏

Java二分检索Arrays.binarySearch的使用

Array 的二分法检索代码如下:

import java.util.Arrays;
/**
 * @from www.everycoding.com
 * Array 的二分法检索
 * 二分检索Arrays.binarySearch接口API:
 * static int binarySearch(int[] a, int key) 
 * @description Searches the specified array of ints for the 
 *  specified valueusing the binary search algorithm.
 */
public class ArrayBinarySearch {
	public static void main(String[] args) {
		byte bArray[] = { 1, 2, 4, 5,3 };
		// 默认按递增排序
	    Arrays.sort(bArray);
	    System.out.println("排序结果:"+Arrays.toString(bArray));
	    
	    byte searchValue = 2;
	    int intResult = Arrays.binarySearch(bArray, searchValue);
	    // 返回2所在Array的下标,从0开始
	    System.out.println("从数组bArray中检索2的结果 : " + intResult);
	    
	    searchValue = 8;
	    intResult = Arrays.binarySearch(bArray, searchValue);
	    // intResult 此时等于  -bArray.length-1
	    System.out.println("从数组bArray中检索8的结果 :  " + intResult);
	    System.out.println("返回负数时:intResult="+(-bArray.length-1));
	}
}

执行结果:

排序结果:[1, 2, 3, 4, 5]
从数组bArray中检索2的结果 : 1
从数组bArray中检索8的结果 :  -6
返回负数时:intResult=-6


结论:

  • 如果数组a中如果没有key,则返回值为某个负值,表示为了保持排序状态,此目标元素应该插入的位置“-(插入点)-1”;

  • 如果找到了key,则返回key所在元素下标。

  • 插入点是指,第一个大于查找对象的元素在数组中的位置,如果数组所有元素都小于要查找的对象,

  • 插入点就等于a.length。

赞一下 1 人赞了本文