java中arrays.binarySearch(int [ ] a, int value) 底层原理

/**
*@author:肖佳嘉
*
*/

 private static int binarySearch0(int[] a, int fromIndex, int toIndex,int key) {
   int low = fromIndex;						//最小索引0
   int high = toIndex - 1;					//最大索引数组长度-1

   while (low <= high) {				//最小索引小于等于最大索引可以循环判断
        int mid = (low + high) >>> 1;	//求出中间索引值,(最小+最大)/2
        int midVal = a[mid];			//通过中间索引获取中间值

        if (midVal < key)				//中间索引对应的值小于查找的值
            low = mid + 1;				//最小索引变化
        else if (midVal > key)			//中间索引对应的值大于查找的值
            high = mid - 1;				//最大索引变化
        else
            return mid; 				// key found	//找到了
    }
    return -(low + 1);  				// key not found.//-插入点 - 1
 }
点赞

发表评论

电子邮件地址不会被公开。 必填项已用*标注