zoukankan      html  css  js  c++  java
  • 算法系列<二分查找>

    二分查找又称折半查找,是针对有序顺序表的查找,前提:数据是顺序存储的,已经按照关键词进行升序排序。查找成功返回索引值,查找不成功返回-1。

    下面用java来实现二分查找算法:

    /**
         * 二分查找:针对已排好序的序列,查找成功返回所在位置的索引值,查找不成功返回-1
         * 查找的最好时间复杂度:O(1),最坏时间复杂度O(logN),平均时间复杂度:O(logN)
         * 测试case:
         * case1:{1} 查找1
         * case2:{1} 查找2
         * case3:{} 查找1
         * case4:{1,2,3} 查找2
         * case5:{1,2,3} 查找1
         * case6:{1,2,3} 查找3
         * case7:{1,2,3} 查找8
         * case8:{4,5,6} 查找1
         * @param table  在table数组里面查找,table数组中的数据是按照从小到大排序的,有序顺序表
         * @param low    查找下界
         * @param high   查找上界
         * @param value  要查找的值
         * @return
         */
        public int binarySearch(int[] table,int low,int high,int value){
    
            if(table.length>0&&low>=0&&low<table.length&&high>=0&&high<table.length&&low<=high) {
                if (low == high) {
                    if (value == table[low]) {
                        return low;
                    } else {
                        return -1;
                    }
                } else {
                    int mid = (low + high) / 2;
                    if (value == table[mid]) {
                        return mid;
                    } else if (value > table[mid]) {
                        return binarySearch(table, mid + 1, high, value);
                    } else {
                        return binarySearch(table, low, mid - 1, value);
                    }
                }
            }else{
                return -1;
            }
        }
  • 相关阅读:
    【Java】:Java当中为什么不能够直接用==比较String字符串
    Mybatis
    spring boot
    IDEA
    IDEA
    kafka集群partition分布原理分析(转发)
    kafka集群partition分布原理分析(转发)
    scons ------ 基本使用
    色彩管理中的Gamma值的理解
    SFUD ------ (Serial Flash Universal Driver) 串行 Flash 通用驱动库
  • 原文地址:https://www.cnblogs.com/zhaijing/p/9774576.html
Copyright © 2011-2022 走看看