Skip to content

Latest commit

 

History

History
95 lines (67 loc) · 3.19 KB

11.二分法查找.md

File metadata and controls

95 lines (67 loc) · 3.19 KB

目录介绍

  • 01.题目要求
  • 02.问题分析
  • 03.实例代码

好消息

  • 博客笔记大汇总【15年10月到至今】,包括Java基础及深入知识点,Android技术博客,Python学习笔记等等,还包括平时开发中遇到的bug汇总,当然也在工作之余收集了大量的面试题,长期更新维护并且修正,持续完善……开源的文件是markdown格式的!同时也开源了生活博客,从12年起,积累共计N篇[近100万字,陆续搬到网上],转载请注明出处,谢谢!所有博客陆续更新到GitHub上!
  • 链接地址:https://github.com/yangchong211/YCBlogs
  • 如果觉得好,可以star一下,谢谢!当然也欢迎提出建议,万事起于忽微,量变引起质变!

01.题目要求

  • 问题如下所示:
    • 一个一系列数组,然后找到某个值的索引

02.问题分析

  • 一定是有序表,升序降序都可以

03.实例代码

  • 如下所示
    /**
     * @param array 有序数组,但不限于数组
     * @param start 开始查找的数组下标
     * @param end 结束查找的数组下标
     * @param searchValue 要搜索的值
     * @return
     */
    public static int search(int[] array, int start, int end, int searchValue){
        if (array != null && array.length > 0){
            int middle = (start + end) / 2;
            int middleValue = array[middle];
            if (searchValue == middleValue){
                return middle;
            }else if (searchValue < middleValue){
                //查询值小于中值,在中值前面再次搜索,缩小范围
                return search(array, start, middle-1, searchValue);
            }else {
                //查询值大于中值,在中值后面再次搜索,缩小范围
                return search(array, middle+1, end, searchValue);
            }
        }else {
            return -1;
        }
    }
    
  • 测试结果
    public static void main(String[] args) {
        int[] array = {1,3,5,7,9,12,14,15,19,20,22,23,28,30};
        System.out.println(search(array, 0, array.length-1, 20));
    }
    

其他内容

01.关于博客汇总链接

02.关于我的博客