手写二分查找

Posted fuckjava

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了手写二分查找相关的知识,希望对你有一定的参考价值。

import java.util.Arrays;

public class binarySearch {
    public static void main(String[] args) {
        int[] arr = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };

        int index = binarySearch(arr, 6);
        System.out.println("这个数对应的索引是 :" + index);
    //    System.out.println(Arrays.binarySearch(arr, 6));
    }

    public static int binarySearch(int[] arr, int zhi) {
        int qi = 0; //数组起始值
        int zhong = arr.length - 1; //数组的末值
        int index = -1;  //定义一个下标
        
        while (qi <= zhong) {
            int suoyin = (qi + zhong) / 2; //获取一个中间值得索引;
            
            int guess = arr[suoyin];       //中间索引对应的值
            if (guess >= zhi) {             //中间索引与输入的值比较
                zhong = suoyin - 1;           //比较后的范围重新定义
            }
            if (guess <= zhi) {
                qi = suoyin + 1;
            }
            if (guess == zhi) {
                index = suoyin;         //相等直接跳出
                break;
            }
        }
        return index;                    //返回索引
    }
}

以上是关于手写二分查找的主要内容,如果未能解决你的问题,请参考以下文章

手写二分查找

面试现场:手写二分查找算法

面试真经-如何快速手写二分查找?

二分查找

手写排序算法手写二分查找说搞就搞啊2018.4.15出门问问倒计时2天

二分查找以及变种的总结