对于一个有序的数列,我们对于该数组的查找,往往都是询问,这个值是不是比一次折半后的值大于还是小于,得到结果后,我们又可以进行下一次的折半查找。
例如:Step1:
Step2:
Step3:
实现步骤:
实现代码:
public class BinarySearchTest {
public static void main(String[] args) {
//创建数组
int[] arr2 = new int[]{2,4,5,8,12,15,19,26,37,49,51,66,89,100};
int head = 0;//首索引
int end = arr2.length - 1;//尾索引
//查找值
int target = 100;
//插旗
boolean isFlag = false;
while (head <= end){
int mid = (head + end) / 2;
if (arr2[mid] == target){
System.out.println("元素" + target + "找到了,索引是:" + mid);
isFlag = true;
break;
} else if (arr2[mid] > target) {
end = mid - 1;
} else {//arr2[mid] < target
head = mid + 1;
}
}
if (!isFlag){
System.out.println("不好意思,没有找到此元素");
}
}
}
以上就是对二分查找的描述。