二分查找也称折半查找(Binary Search),它是一种效率较高的查找方法。但是,折半查找要求线性表必须采用顺序存储结构,而且表中元素按关键字有序排列
原理
1.将数据分成两部分记录两端和中点的下标
2.比较中点下标的值是否是所查找的值,如果是则输出该下标,不是则比较大小,若该值大于所查找的值则将右端点更新反之则更新左端点
3.循环操作
例如一组数组: 1 2 3 4 5 6 7 8 查找 8在数组中的下标的下标
第一次 0 3 7
第二次 4 5 7
第三次 6 6 7
第四次 7 7 7
找到输出
public static int bs(int[] array,int input) { int right=array.length-1; int left=0; int mid=(right+left)/2; while(array[mid]!=input) { if(right<left) { return -1; } if (array[mid]>input) { right=mid-1; }else { left=mid+1; } mid=(right+left)/2; System.out.println(left); System.out.println(mid); System.out.println(right); } return mid; }
浙公网安备 33010602011771号