二分查找算法

二分查找:

二分查找又叫折半查找,是一种简单又快速的查找算法;它对要查找的序列有个要求。

  • 前提是该序列是已经排序好的,升序降序都可以
  • 我这里默认为升序

代码实现:

  • 定义一个方法,传入一个数组和需要查询的值,用来查询这个值对应的索引

       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。

posted @ 2021-06-23 09:01  JamieChyi  阅读(28)  评论(0)    收藏  举报  来源