欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

二分查找算法

程序员文章站 2022-03-05 16:17:06
...

这个算法要求数据必须是排好序的
这次用的是递归实现。

package a;

public class BaniarySearch {
    public static void main(String[] args) {
        int[] arr = {9, 14, 34, 52, 80, 876};
        int value = 877;
        int sta =0;
        int end = arr.length-1;
        int index = seek(arr, value,sta,end);
        if (index > 0) {

            System.out.println("index = " + index);
            System.out.println("index = " + arr[index]);
        }else {
            System.out.println("index = " + index);
        }
    }

    private static int seek(int[] arr, int value, int sta, int end) {
        int res=0;
        if (sta <= end) {//这个if else 可以改成  直接用if 判断相反的条件,直接返回。因为是退出的条件,而且在前边
            int mid = (sta+end)/2;

            if (arr[mid] == value) {
                return mid;
            } else if (arr[mid] > value) {
                 res = seek(arr, value, sta, mid - 1);
                return res;
            }else {
                res = seek(arr, value, mid+1, end);
                return res;

            }
        }else {

            System.out.println("null");
            return -1;
        }

    }
}

相关标签: 查找算法