package com.xhm.sjjg;
/**
* 二分查找算法,是一种查询效率比较高的算法 O(logN)
* 算法描述:
* 给定一整数i和一个整数数组ary,ary要求预先排好序,
* 找出i在ary中的下标位置,没找到则返回-1.
*
* 需注意:
* 1、数组必须是有序的,相应数组的插入/删除操作较困难
* 2、此种查找方式一般适用于不经常变动而查找频繁的有序列表
*/
public class BinaryChopTest
{
public static final int NOT_FIND = -1;
/**
* 算法说明:
* 1、将数组中间的值与i进行比较,如果相等,则查找成功,返回中间值的下标。
* 2、如果不等则存在大于或等于两种情况,ary数组也被分为前后两部分。
* 3、小于i,则将后面部分继续从1执行
* 4、大于i,则将前面部分继续从1执行
*/
public static int find(int[] ary, int i)
{
int index = 0;
int low = 0;
int height = ary.length - 1;
while (low <= height)
{
index = (low + height) / 2;
if (i > ary[index])
{
low = index + 1;
} else if (i < ary[index])
{
height = index - 1;
} else
{
return index;
}
}
return NOT_FIND;
}
public static void main(String[] args)
{
int[] ary = {2,5,7,9,12,14,15,17,18,23,25};
int index = BinaryChopTest.find(ary, 14);
System.out.println("index = " + index);
}
}
二分查找算法
最新推荐文章于 2025-08-07 15:32:36 发布