一、查找过程
使用二分查找算法有一个必要的前提:数组已经是一个排好序的数组。
以下面数组为例,讲述二分查找过程:
二、代码实现
package com.itheima.sort;
public class BinarySearch {
public static void main(String[] args) {
int[] arr = {1, 23, 45, 66, 77, 81, 84, 90, 124};
System.out.println(BinarySearch(arr, 150));
System.out.println(BinarySearch(arr, 81));
}
public static int BinarySearch(int[] arr, int data) {
//标记左边位置
int left = 0;
//标记右边位置
int right = arr.length - 1;
//循环折半
while (left <= right) {
int mid = (left + right) / 2;
if (data > arr[mid]) {
left = mid + 1;
} else if (data < arr[mid]) {
right = mid - 1;
} else {
return mid;
}
}
//没找到对应数,返回-1
return -1;
}
}