在介绍二分查找法之前,我们现在简述一个例子;随机有1~100个数字,并且是有序的,让你猜测其中一个数字,对于猜测的数字我们会有三种答案,分别是:大了,小了,相等。假如我们用一种最基本的for循环遍历的方法进行一一比较的话,假如这个数字在开始的位置还好,如果这个数字在最后的位置呢?那么就要用到这个二分查找的方法,举个栗子,假如我们要查找51这个数字,用普通的遍历进行查找的话,我们需要第51次才能找到这个值,但是我们用二分法的话,我们可以最少用两次的方法就可以把这个值找到,说的明确点就是,减少了查询的时间,在数据量特别的大的有序情况下,二分查找是一个很好的选择。废话不多少了,上demo:
public static void twoFind(int d,int[] g) {//d:要查询的值;g待查询的数组
int end = g.length-1;
int first = 0;
int c = (g.length-1)/2;
while(true) {
if(g[c] == d) {
System.out.println(c + ""+g[c]);
return;
}
if(first > end) {
System.out.println("无值");
return;
}
if(d > g[c]) {
c = end -1;//要查询的值在后半部分
}else {
c = first +1;//要查询的值在前半部分
}
}
}
对于一个有序的数据序列,二查找的方法不仅仅可以用于查找数据,也可以用于删除,插入数据,那样的话最好不要用数组