
课程咨询: 400-996-5531 / 投诉建议: 400-111-8989
认真做教育 专心促就业
当我们需要在已排好序的数组中寻找到特定值时,可以使用二分查找,效率高。
所需要用到的工具:左指针、右指针、mid指针
思想:左指针右指针分别对应该元素所在数组中的范围边界,初始化值为0和a.length;取中间值=(左指针+右指针+1)/2,这样就得到两个个区间(左指针,mid)(mid,右指针),判断mid处的值与待确定位置值(S)的大小关系,若mid>S,说明S的位置应该在左区间,反之则在右区间。然后取对应的区间,再次如法炮制,递归求解后得到正确结果。
public class BinarySearch {
public static void main(String[] args) {
// TODO Auto-generated method stub
int[] a = new int[] {1,2,4,6,7,9,11,15};
System.out.println(BinarySearch.binarySearch(a, 0, a.length, 10));
}
static boolean isFind = false;
public static int binarySearch(int[] a,int left,int right,int search) {
while(!isFind)
{
if(left>=right) break;
int mid = (left+right+1)/2;
if(a[mid] > search) {
right = mid-1;
}else if(a[mid] < search) {
left = mid+1;
}else if(a[mid] == search) {
isFind = true;
left = mid;
}
}
if(!isFind) left = -1;
return left;
}
}