*
import java.util.Arrays;
import java.util.Random;
import java.util.Scanner;
public class BinarySearch {
/*
二分查找原理:
顾名思义,就是在一个数组中查找一个特定的值
二分查找可以在每次查找后,减少一半的查找量
但是二分查找有个前提就是数组必须是先排序好的。
*/
public static void main(String[] args) {
// 随机生成(1-100)的指定长度的数组
Scanner scanner = new Scanner(System.in);
System.out.print("请输入指定的数组长度:");
int[] arr = randomArr(scanner.nextInt());
System.out.println("源数组: arr = " + Arrays.toString(arr));
System.out.print("请输入要查找的元素:");
int key = scanner.nextInt();
int index = binarySearch(arr, key);
if (index != -1) {
System.out.println(key + "值在数组中的索引为:" + index);
}
else {
System.out.println("数组中不存在" + key + "元素!");
}
}
private static int binarySearch(int[] arr, int key) {
// 定义小索引min,和大索引max
int min = 0;
int max = arr.length - 1;
// 循环查找
while (min arr[middle]) {
min = middle + 1;
}else {
return middle;
}
}
return -1;
}
private static int[] randomArr(int length) {
Random random = new Random();
System.out.print("请输入数组的长度:");
int[] arr = new int[length];
for (int i = 0; i < arr.length; i++) {
arr[i] = random.nextInt(101) + 1;
}
Arrays.sort(arr);
return arr;
}
}
Original: https://www.cnblogs.com/OnlyOnYourself-lzw/p/16567734.html
Author: OnlyOnYourself-Lzw
Title: 17-二分查找
原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/581575/
转载文章受原作者版权保护。转载请注明原作者出处!