Java数据结构与算法分析——二分法查找


版权声明

  • 本文原创作者:谷哥的小弟
  • 作者博客地址: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;
	}

}

运行结果

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/lfdfhl/article/details/109322224