如果查找某个数组的数我们可以循环遍历,但是这样效率比较低。
可以用二分法,加快查找的效率。二分法的原理是什么?就是取中间数,不整除取整数。判断查询的数和要找的数是大是小。在进行判断,随着中间数的变化就可以找到,并且如果有正好返回中间数(对应的是坐标),如果没有找到这样就直接返回-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.*;