向左向右 —折半查找(二分法)

时间:2020-09-15 21:24:27   收藏:0   阅读:45
/**
*@param 参数一:查找的数组 参数二:要找的值
*
*/
public static int dichotomia(int[] arry,int key)
{
	int min = 0;
	int max = arry.length() - 1;
	int mid = (min + max)>>1;      //先选一般查看是否为查找值
	while(arry[mid] != key)
	{
		if(arry[mid] < key){    //判断大小 改变最值来决定向上还是向下继续查找
			min = mid +1;        
		}else {
			max = mid -1;
		}
		mid = (min + max)>>1;    //继续二分获取中间值
		if(min > max || max < min){  //如果比最大值大 或比最小值小 说明没有 返回-1
			return -1;
		}
	}

	return mid;
}

  

评论(0
© 2014 mamicode.com 版权所有 京ICP备13008772号-2  联系我们:gaon5@hotmail.com
迷上了代码!