二分法查找(java)

       如果查找某个数组的数我们可以循环遍历,但是这样效率比较低。

      可以用二分法,加快查找的效率。二分法的原理是什么?就是取中间数,不整除取整数。判断查询的数和要找的数是大是小。在进行判断,随着中间数的变化就可以找到,并且如果有正好返回中间数(对应的是坐标),如果没有找到这样就直接返回-1.

       二分法适用于排好序的。来看一下java代码。

public static void main(String[] args)
	{		
		int[] test={1,12,22,23,25,56,88,96};
	     int restult=halfSearch_2(test,0);  //这里代表两个参数一个是数组,一个是查找匹配的数
		                                                   
		 System.out.print(restult);   
	}
	
	//排好序进行查找
	public static int halfSearch(int[] test,int key )
	{
		int max=test.length;
		int min=0;
		int mid=(max+min)>>1;
		
		while(key!=test[mid])
		{
			if(key>test[mid])
			{
				min=mid+1;
			}
			else
			{
				max=mid-1;
			}
		    if(min>max)
			{
				return -1;
			}
		    mid=(min+max)>>1;//求中间数的方法
		}
		return mid;
	}

     这里还有一个java自带的函数   int restult1=Arrays.binarySearch(test,0);

     需要引用 import java.util.*;


       

猜你喜欢

转载自blog.csdn.net/iwuio/article/details/79342347