二分查找法
传入一个数组,一个目标值,返回目标值在数组中的索引,如果不存在,返回-1
package com.dhr.study.algorithm.search_algorithm;
/**
* 二分查找法
*/
public class BinarySearch {
/**
* 二分查找
*
* @param arr 有序数组
* @param target 目标值
* @return 目标值在数组中的索引,如果不存在则返回-1
*/
public int binarySearch(int[] arr, int target) {
int low = 0; // 最小索引
int high = arr.length - 1; // 最大索引
int mid; // 中间索引
while (low <= high) {
mid = low + (high - low) / 2; // 计算中间索引
if (target == arr[mid]) { // 如果目标值等于中间值
return mid; // 返回中间索引
} else if (target < arr[mid]) { // 如果目标值小于中间值
high = mid - 1; // 更新最大索引
} else {
low = mid + 1; // 更新最小索引
}
}
return -1; // 目标值不存在于数组中,返回-1
}
public static void main(String[] args) {
// 创建一个包含一些整数的数组
int[] arr = new int[]{3, 4, 6, 20, 40, 45, 51, 62, 70, 99};
// 创建一个BinarySearch对象
BinarySearch binarySearch = new BinarySearch();
// 调用BinarySearch对象的binarySearch方法来查找数组中指定元素的索引
// 并将结果打印到控制台
System.out.println(binarySearch.binarySearch(arr, 20));
}
}
运行结果