二分法查找

原创 2016年08月29日 18:37:02


                                               二分法查找

(一)   二分法查找又叫折半查找,对于已经按从小到大排好序的数组a[],当要查找某个元素b的时候,先计算(a.length - 1)/2 把该位置上的元素与b比较,如果b比a[(a.length - 1)/2]小,则在a[(a.length - 1)/2]的左边区间找。这是再算出左边区间的中间下标,又把该位置上的元素与b比较,依次类推。



比如数组int  a[] = {2,11,15,19,30,32,61,72,88,90,96}现在要用二分法查找15

步骤如下,(a.length - 1)/2  = 5 ,a[5]= 32. 15< 32,所以在左区间找。 这时候{(a.length - 1)/2}/2 = 2

                  a[2]= 15,刚好 就找到了


代码如下:

public class ErFenFaSearch {
	public static void main (String args[]){
		int  a[] = {2,11,15,19,30,32,61,72,88,90,96};
		search(a, 0, a.length - 1, 30);
	}
	
	public static int search(int s[],int low ,int high,int value){
		 int mid;
		
		while(low < high){
			mid = (low + high)/2;
			if(value == s[mid]){
				System.out.print(mid);
				return  mid ;
			}
			else if(value< s[mid]){
				high = mid;
			}
			else if(value > s[mid]){
				low  =  mid;
			}
			}
		System.out.print(-1);
		return  -1;
		
	}

相关文章推荐

二分法查找

  • 2013年07月03日 08:34
  • 548B
  • 下载

java中几中常见的排序方式汇总及二分法查找

1.交换排序 代码实现 public static void main(String[] args){ int [] nums=new int[]{15,23,35,8,80,68,6}; for...

二分法排序和查找(C#)

  • 2012年03月27日 16:51
  • 21KB
  • 下载

c++褊写的二分法查找程序

  • 2011年03月30日 01:01
  • 2KB
  • 下载

用PHP实现二分法查找之递归和迭代

废话: 前段时间经历过的几个面试,考官都很喜欢问的一个问题是,请写一个二分法查找的算法。 我一听,嘿,简单,袖子一撸,操起键盘就扒拉扒拉。 写出来,考官一看,眉头凝成小山丘,说:你这代码网上扒的...

C#二分法查找连续数字

  • 2017年10月10日 14:07
  • 5KB
  • 下载

二维数组中的查找 之 二分法

在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。 请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。 例如下面的二维数组...

二分法查找

  • 2013年07月31日 09:47
  • 106KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:二分法查找
举报原因:
原因补充:

(最多只允许输入30个字)