zoukankan      html  css  js  c++  java
  • 二分查找

     二分查找(折半查找)

     [要求] 1. 必须采用顺序存储结构; 2.必须按关键字大小有序排列。

    /**
         * 折半查找
         * @param arr
         * @param searchValue
         * @return
         */
        public static int binarySearch(int[] arr, int searchValue) {
            if(arr == null) {
                return -1;
            }
            
            int low = 0;
            int high = arr.length -1;
            
            while(low <= high) {
                int midIndex = (low + high)/2;
                
                if(arr[midIndex] == searchValue) {
                    return midIndex;
                }else if(arr[midIndex] > searchValue) {
                    high = midIndex - 1;
                }else{
                    low = midIndex + 1;
                }
                
            }
            
            return -1;
            
        }
        
        
        /**
         * 二分查找,特殊实现
         * @param arr
         * @param searchValue
         * @param first
         * @param last
         * @return
         */
        public static int binarySearch(int[] arr, int searchValue, int first,int last) {
            if(arr == null) {
                return -1;
            }
            
            if(searchValue < arr[first] || searchValue > arr[last]) {
                return -1;
            }
            
            int midIndex = (first+last)/2;
            
            if(searchValue < arr[midIndex]) {
                return binarySearch(arr, searchValue, first, midIndex-1);
            }else if(searchValue > arr[midIndex]){
                return binarySearch(arr, searchValue, midIndex + 1, last);
            }else {
                return midIndex;
            }
            
        }
        
    齊帥
  • 相关阅读:
    函数集
    2019.1.7
    第九次团队作业-测试报告与用户使用手册
    α版本升升备忘录下载链接
    系统设计和任务分配(个人)
    团队作业说明
    备忘录-团队选题报告
    需求分析与原型设计---升升备忘录
    项目——四则运算器
    Hello Django
  • 原文地址:https://www.cnblogs.com/qishuai/p/8659441.html
Copyright © 2011-2022 走看看