算法:二分法查找(折半查找法)

算法:二分法查找(折半查找法)

//二分查找法(折半查找法)
    public static int halfSearch(int[] arr,int number){
        int min =0;  //最小下标
        int max =arr.length-1;   //最大下标
        int mid = 0;  //中间下标
        while (min<=max){
            //没找到,更新范围继续找
            mid = (min+max)/2;
            if (arr[mid]>number){   //number在mid的左边
                max = mid-1;  //改变最大下标
            }else if(arr[mid]<number){  //number在mid的右边
                min = mid+1;  //改变最小下标
            }else{
                return  mid;
            }
        }
        return -1;
    }

这是最经典的折半查找,而在面试的时候往往会对某些经典的数据结构和算法进行魔改,这道题总是被改成以下的问题:
1.使用二分法对一个数组中的数据进行查找,返回目标数值所在的下标:包含与目标值重复的所有左边的值
2.使用二分法对一个数组中的数据进行查找,返回目标数值所在的下标:包含与目标值重复的所有右边的值
3.使用二分法对一个数组中的数据进行查找,返回所有目标数值所在的下标

这些雷你踩过了么?
PS:今天刚踩到了3号复合雷,前来报到!

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容