本文共 1023 字,大约阅读时间需要 3 分钟。
现存一个有序数组{ 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; }}