• 折半查找


    // 折半查找
        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
      }

     
  • 相关阅读:
    搭建MHA问题汇总
    NOIP2009 靶形数独
    get_mysql_conn_info.py
    NOIP 2005 篝火晚会
    MySQL启动关闭添加到 /etc/init.d/mysqld
    noip2002 矩形覆盖
    get_slave_status.py
    [JSOI2008]魔兽地图
    MySQL数据导出导入任务脚本
    8.30 牛客OI赛制测试赛1 F题 子序列
  • 原文地址:https://www.cnblogs.com/mamamia/p/7985790.html
Copyright © 2020-2023  润新知