二分查找
二分查找又称折半查找
适用于顺序存储结构按有序排列
算法原理
将数组中间位置元素和目标元素进行比较,如果相同,则查找成功
如果不相等,那么查找的元素一定前半部分或后半部分
如果目标元素大于中间元素,则查找后半部分,否则查找前半部分
重复上面的过程,直到找到满足要求的元素,查找成功
如果还没有找到,则此元素不在数组里面
有一个数组:2,6,10,14,18,22,26
使用二分查找算法找出6在数组中的位置
代码实现
public static void main(String args[]) {
int arr[] = {2, 6, 10, 14, 18, 22, 26};
//查找指定元素的位置
int index = binarySearch(arr, 6);
System.out.println("查找元素位置为:" + index);
}
private static int binarySearch(int[] arr, int target) {
//第一个index
int min = 0;
//最后一个index
int max = arr.length - 1;
int mid = (min + max) >> 1;
//循环查找指定值的index
while (arr[mid] != target) {
//在左边
if (arr[mid] > target) {
//更新最大值
max = mid - 1;
} else {
//在右边,更新最小值
min = mid + 1;
}
//更新中间值
mid = (min + max) / 2;
if (min > max){
mid = -1;
break;
}
}
return mid;
}
到此结束了,希望对有需要的小伙伴有所帮助。