package cn.itcast.day13;
import java.util.Arrays;
public class BinarySearch {
/**
* @param args
* 折半查找
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
// 定义一个数组
int[] arr = { 1, 42, 14, 53, 23, 75, 45, 19, 55, 44, 43, 134 };
printArray(arr);
// 折半查找必须是有序的查找,所以首先排序
Arrays.sort(arr);
printArray(arr);
// 折半查找
int a = binarySearch(arr, 75);
System.out.println(a);
}
// 定义输出方法。用于打印数组
public static void printArray(int[] arr) {
for (int i = 0; i < arr.length; i++) {
if (i == 0) {
System.out.print("[" + arr[i]);
} else {
System.out.print("," + arr[i]);
}
}
System.out.print("]");
System.out.println();
}
// 折半查找方法
public static int binarySearch(int[] arr, int value) {
// 定义最大、最小、以及中间索引
int maxIndex = arr.length - 1;
int minIndex = 0;
int midIndex = (maxIndex + minIndex) / 2;
while (arr[midIndex] != value) {
if (arr[midIndex] > value) {
maxIndex = midIndex - 1;//
} else if (arr[midIndex] < value) {
minIndex = midIndex + 1;//
}
if (minIndex > maxIndex) {
return -1;//
}
midIndex = (maxIndex + minIndex) / 2;
}
return midIndex;//
}
}
|
|