zoukankan      html  css  js  c++  java
  • Java二分法

    public class Dichotomy {
        
        //定义查找次数
        static int count = 0;
        
        public static void main(String[] args) {
            
            //定义数组
            int [] array = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
            
            //二分法查找
            int result = searchRecursive( array, 0, array.length - 1, 3);
            
            //打印结果
            System.out.println("二分法查找结果为=" + result);
            System.out.println("查找次数为=" + count);
        }
        
        /**
         * 执行递归二分查找,返回第一次出现该值的位置
         *
         * @param array
         *            已排序的数组
         * @param start
         *            开始位置
         * @param end
         *            结束位置
         * @param findValue
         *            需要找的值
         * @return 值在数组中的位置,从0开始。找不到返回-1
         */
        private static int searchRecursive(int[] array, int start, int end, int findValue) {
            
            //数组如果为空则返回-1
            if(array == null){
                
                return -1;
            }
            
            
            
            while(start <= end){
                
                count++;
                
                //获取中间位置
                int middle = (start + end) / 2;
                
                //获取中间值
                int middleValue = array[middle];
                
                if(middleValue == findValue){
                    
                    return middle;
                }else if(findValue < middleValue){
                    
                    end = middle - 1;
                }else{
                    
                    start = middle + 1;
                }
                
            }
            
            return -1;
        }
    }

  • 相关阅读:
    TOPCoder(一)Time
    highchart柱状图 series中data的数据构造
    (转)myeclipse工程 junit不能运行 ClassNotFoundException
    reserve和resize区别
    ++ fatal error C1083: 无法打开预编译头文件:“.Debug outer.pch”
    初学lua --lua嵌入c++的一个问题(初始化lua出错,版本问题)
    .NET中字符串split的C++实现
    成员函数指针与高效C++委托 (delegate)
    Android.mk 用法介绍
    cocos2d-x学习之旅(五):1.5 使用eclipse编译cocos2d-x示例项目,创建cocos2d-x android项目并部署到真机
  • 原文地址:https://www.cnblogs.com/gslblog/p/6888327.html
Copyright © 2011-2022 走看看