二分查找:
二分查找
又叫折半查找
,是一种简单又快速的查找算法;它对要查找的序列有个要求。
- 前提是该序列是已经排序好的,升序降序都可以
- 我这里默认为升序
代码实现:
- 定义一个方法,传入一个数组和需要查询的值,用来查询这个值对应的索引
private static int searchIndex(int[] a, int val) { // 开始下标 int start = 0; // 结束下标 int end = a.length - 1; while (start <= end) { // 获取中间索引, >>>无符号右移(/2) int indexHalf = (start + end) >>> 1; if (a[indexHalf] > val) { end = indexHalf - 1; } else if (a[indexHalf] < val) { start = indexHalf + 1; } else { return indexHalf; } } return -1; }
- 传入参数和需要查询索引的值
public class Test1 { public static void main(String[] args) { // 定义一个有序数组 int[] a = {2, 3, 5, 67, 234}; // 接收67对应的索引 int index = searchIndex(a, 67); System.out.println(index); // 3 } }
结果输出3,也就是67在数组的下标为3。