世界上并没有完美的程序,但我们并不因此而沮丧,因为写程序本来就是一个不断追求完美的过程。 ——摘自周志明

二分查找

二分查找

            int[] arr = {1,2,3,4,5,6,7,8,9,10};
	
	int value = 2;
	int left = 0;
	int right = arr.length-1;
	int mid = (left + right)/2;
	int index = -1;
	
	//退出循环:(1)找到了   value == arr[mid]  break;
	//			(2)没找到,全部都找完了   left > right 
	while(left <= right){
		if(value == arr[mid]){//找到了
			index = mid;
			break;
		}else if(value > arr[mid]){//value在arr[mid]的右边
			left = mid + 1;//修改左边界,使得mid往右移动
		}else if(value < arr[mid]){//value在arr[mid]的左边
			right = mid - 1;//修改右边界,使得mid往左边移动
		}
		mid = (left + right)/2;
	}		
	
	if(index == -1){
		System.out.println(value + "在数组中不存在!");
	}else{
		System.out.println(value + "在数组中的下标是" + index);
	}
posted @ 2018-10-09 20:20  白杯与咖啡  阅读(130)  评论(0编辑  收藏  举报