首页 > 编程语言 > 详细

查找算法(1)--二分查找

时间:2015-12-29 02:08:53      阅读:304      评论:0      收藏:0      [点我收藏+]

简介: ?二分查找算法是针对有序数组进行查找某个元素的算法,时间复杂度为Ο(logn)?

?
一、主要步骤
有序数组arr(假设从小到大),待查找元素x
(1)、直接从中间一个元素开始找,mid = (0+arr.length)/2
(2)、如果arr[mid]大于x,说明目标索引在mid索引的左半边,把左边当作一个完整的数组继续查找
(3)、如果arr[mid]小于x,说明目标索引在mid索引的右半边,把右边当作一个完整的数组继续查找
(4)、如果arr[mid]等于x,那就找到了
?
二、代码实现
public int search(int[] arr,int x) throws Exception{
	int start = 0;
	int end = arr.length-1;
	
	while(start<=end){
		int mid = (start+end)/2;
		
		if(arr[mid]>x){
			end = mid-1;
		}else if(arr[mid] == x){
			return mid;
		}else if(arr[mid]<x){
			start = mid+1;
		}
	}
	
	throw new Exception("not found"+x);
}
?

查找算法(1)--二分查找

原文:http://haoran-10.iteye.com/blog/2267250

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!