版权声明
- 本文原创作者:谷哥的小弟
- 作者博客地址:http://blog.csdn.net/lfdfhl
原理分析
现存一个有序数组{ 2, 5, 8, 12, 16, 23, 38, 56, 72, 91 },请利用二分法查找出元素23所对应的下标index。
前提条件
二分查找的前提是数组中的元素是有序的,否则无法查找。
查找原理
第一步:
确定整个数组的最大下标、最小下标、中间下标
第二步:
将目标值与最大下标所对应的值、最小下标所对应的值、中间下标所对应的值相比较
第三步:
调整最大下标、最小下标、中间下标
查找流程
代码实现
二分法查找的代码实现如下:
package com.algorithm;
/**
* 本文作者:谷哥的小弟
* 博客地址:http://blog.csdn.net/lfdfhl
*
*/
public class BinarySearch {
public static void main(String[] args) {
int[] intArray = {
2, 5, 8, 12, 16, 23, 38, 56, 72, 91 };
int index = binarySearch(intArray, 23);
System.out.println(index);
}
public static int binarySearch(int[] intArray, int value) {
int max = intArray.length - 1;
int min = 0;
int mid = (max + min) / 2;
while (intArray[mid] != value) {
if (min <= max) {
if (intArray[mid] > value) {
max = mid - 1;
} else if (intArray[mid] < value) {
min = mid + 1;
}
mid = (max + min) / 2;
} else {
System.out.println("未查询到相应数据");
mid = -1;
break;
}
}
return mid;
}
}