二分查找
二分查找
【举个例子】,你去图书馆找一本书,如果你知道这个书架上的书是按照编号有序排列,你会从头开始一个一个找吗?
你大概的思路是这样的,先去中间看看,如果我找的书的编号比中间的大我就去左边找,否则去右边找。
这种思路就是我们的二分查找法:
(1)二分查找(折半查找)

import java.util.Scanner;
public class BinarySearch {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int[] nums = {14,24,28,37,54,67,79,85,96,157,257,368};
System.out.println("请输入您要查找的数字:");
int target = scanner.nextInt();
//需要左右两个变量确定检索范围
int left = 0;
int right = nums.length -1;
if (target < nums[0] || target > nums[nums.length-1]){
System.out.println("您输入的数字不存在!");
}
int b = -1;
while (left <= right){//左右下标不重合就继续
int middle = (left+right)/2;
if (nums[middle] == target){
b = middle;
break;
}else if (nums[middle] > target){
right = middle-1;
}else {
left = middle+1;
}
}
System.out.println(b);
}
}

浙公网安备 33010602011771号