二分法
什么是二分法查找
简单粗暴一点理解二分法
(1)将数据有序排列:先将一个数据集进行有序排列;
(2)数据分半: 就是将排序好的数据集切分成大致相等的两份数据集;
(3)查找数据: 查找的时候直接和拆分数据集中的第一个或最后一个元素进行大小比较,不满足则表示数据不存在于该数据集中,满足则说明要查找的元素存在于当前数据集中.
import java.util.Scanner;
// dichotomy 二分法
public class Dichotomy {
public static int dichotomy (int[] arr) {
int start = 0; //初始位置的索引
int end = arr.length - 1; //结束位置的索引
Scanner sc = new Scanner(System.in);
System.out.print("请输入数组中要查找的数:");
int num = sc.nextInt();
while (start < end) {
int mid = (start + end) / 2;
if (arr[mid] == num) {
System.out.println("查找的数字的位置在第" + (mid + 1) + "位");
return -1;
} else if (arr[mid] < num) {
start = mid - 1;
} else if (arr[mid] > num) {
end = mid + 1;
}
}
while (true) { //当标识为true时,标识未在数组中找到该数
System.out.println("该查找数字不在数组中!");
}
}
public static void main(String[] args) {
int[] arr = {2, 12, 32, 42, 52, 62, 72, 82, 92};
dichotomy(arr);
}
}
【注意】前提是有序数组才能二分法查找,如果是无需数组,请先对数据进行排序后再进行二分法查找