zoukankan      html  css  js  c++  java
  • 折半查找

    // 折半查找
        public static final int FIND_OK = 1;
        public static final int FIND_FAIL = -1;
    
        public static int binarySearch(int[] array, int keyValue) {
    
            if (array == null || array.length == 0) {
                returnFIND_FAIL ;
           }
         int posLow = 0;
            int posHei = array.length - 1;
            while (posLow <= posHei) {
                if (array[posLow] == keyValue || array[posHei] == keyValue) {
                    return FIND_OK;
                }
                int middlePos = posLow + ((posHei - posLow) / 2);
                if (array[middlePos] == keyValue) {
                    return FIND_OK;
                } else {
                    if (array[middlePos] < keyValue) {
                        posLow = middlePos + 1;
                    } else {
                        posHei = middlePos - 1;
                    }
                }
            }
            return FIND_FAIL;
        }

    虽然简单但有几点注意:

    1.方法要做的事,第一任务是判断参数有效性。

    2.考虑是否溢出。

    3.可读性变量命名,返回值设置。

    // 折半查找
        public static RESULT binarySearch(int[] array, int keyValue) {
    
            if (array == null || array.length == 0) {
                return RESULT.ERROR_PARAM;
            }
            int posLow = 0;
            int posHei = array.length - 1;
            while (posLow <= posHei) {
                if (array[posLow] == keyValue || array[posHei] == keyValue) {
                    return RESULT.FIND_OK;
                }
                int middlePos = posLow + ((posHei - posLow) / 2);
                if (array[middlePos] == keyValue) {
                    return RESULT.FIND_OK;
                } else {
                    if (array[middlePos] < keyValue) {
                        posLow = middlePos + 1;
                    } else {
                        posHei = middlePos - 1;
                    }
                }
            }
            return RESULT.FIND_FIAL;
        }

      enum RESULT {
        FIND_OK, FIND_FIAL, ERROR_PARAM
      }

     
  • 相关阅读:
    [软件逆向]实战Mac系统下的软件分析+Mac QQ和微信的防撤回
    测试Storm的多源头锚定
    理解Storm可靠性消息
    Storm处理流程, 基本参数配置
    解决Storm 和yarn 8080 端口冲突
    TridentState分析
    Trident中 FixedBatchSpout分析
    Java序列简单使用
    JVM 监控以及内存分析
    Zookeeper入门开发demo
  • 原文地址:https://www.cnblogs.com/mamamia/p/7985790.html
Copyright © 2011-2022 走看看