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;
        }
    }

  • 相关阅读:
    第 33课 C++中的字符串(下)
    第 33课 C++中的字符串(上)
    第32课 初探C++标准库
    第31课 完善的复数类
    第30课 操作符重载
    第29课 类中的函数重载
    C++和C的相互调用
    函数重载遇上函数指针
    函数重载分析
    第2课 算法的效率问题
  • 原文地址:https://www.cnblogs.com/gslblog/p/6888327.html
Copyright © 2011-2022 走看看