数组二分查找

二分查找
1.定义3个下标
lo=0
hi=a.length-1
mid先复制
2.当lo<=hi
3.计算中间位置mid=(lo+hi)/2
4.比较中间位置mid的值>t,hi定位到mid-1
5.如果mid的值 6.否则,直接返回mid的值
7.找不到数据,返回特殊值-1

import java.util.Arrays;
public class ErFen {

    public static void main(String[] args) {
        int []a={11, 46, 56, 56, 94};
        Arrays.sort(a);
        System.out.println(Arrays.toString(a));
        int t=46;
        //二分查找
        int index=binarySearch(a,t);
        if(index!=-1)
        System.out.println(index);
        else
            System.out.println("没找到");
        
    }

    private static int binarySearch(int[] a, int t) {
        /*
         * 46
         * 
         * 中间mid=(lo+hi)/2
         * [11, 46, 56, 56, 94]
         *  lo                
         *                   hi
         *          mid
         *          
         *   lo 
         *          mid
         *       hi
         *       
         *   1.定义3个下标
         *   lo=0
         *   hi=a.length-1
         *   mid先复制
         *   2.当lo<=hi
         *        3.计算中间位置mid=(lo+hi)/2
         *        4.比较中间位置mid的值>t,hi定位到mid-1
         *        5.如果mid的值t)//中间位置大
            {
                hi=mid-1;
            }
            else if(a[mid]

运行结果

[11, 46, 56, 56, 94]
1

你可能感兴趣的:(数组二分查找)