二分查找(折半查找)
1. 原理
2. 代码实现
/**
* 二分查找
*/
public class binarySearch {
/* 对数组内的元素进行查找 */
public int search(Comparable[] arr, Comparable target) {
int left = 0;
int right = arr.length - 1;
int mid = (left + right) / 2;
// 循环分割数组,进行查找
while (left <= right) {
int operation = target.compareTo(arr[mid]);
// operation>0,target>arr[mid],目标元素在mid右侧
if (operation > 0) {
left = mid + 1;
mid = (left + right) / 2;
}
// operation<0,target<arr[mid],目标元素在mid左侧
if (operation < 0) {
right = mid - 1;
mid = (left + right) / 2;
}
// operation=0,target=arr[mid],目标元素等于mid处元素
if (operation == 0) {
return mid;
}
}
// 未找到目标元素
return -1;
}
}