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
      }

     
  • 相关阅读:
    js获取浏览器和屏幕的各种宽度高度
    闭包
    原型与原型链
    vuex
    微信小程序天使童装答辩
    vue脚手架本地开发跨域请求设置
    mvvm和mvc
    Vue 中 methods,computed, watch 的区别
    keep-alive
    YII2组件之GridView
  • 原文地址:https://www.cnblogs.com/mamamia/p/7985790.html
Copyright © 2011-2022 走看看