zoukankan      html  css  js  c++  java
  • Java实现二分查找(折半查找)

    1 问题描述
    首先,了解一下何为折半查找?此处,借用《算法设计与分析基础》第三版上一段文字介绍:

    在这里插入图片描述

    2 解决方案
    2.1 递归法

    package com.liuzhen.chapter4;
    
    public class BinarySearch {
        //方法1:递归求解
        public void recursionSearch(int[] A,int start,int end,int number){
            int mid = (start + end)/2;
            if(A[mid] == number)
                System.out.println("使用递归法求取number = "+number+"的数组下标结果:"+mid);
            if(A[mid] > number)
                recursionSearch(A,start,mid-1,number);   //递归调用
            if(A[mid] < number)
                recursionSearch(A,mid+1,end,number);     //递归调用
        }
        
        
        public static void main(String[] args){
            BinarySearch test = new BinarySearch();
            int[] A = {3,14,27,31,39,42,55,70,74,81,85,93,98};
            test.recursionSearch(A, 0, A.length-1, 70);
        }
    }
    

    运行结果:

    使用递归法求取number = 70的数组下标结果:7
    

    2.2 迭代法

    package com.liuzhen.chapter4;
    
    public class BinarySearch {
        
        //方法2:迭代求解
        public int iterationSearch(int[] A,int number){
            int start = 0;
            int end = A.length-1;
            while(start <= end){
                int mid = (start + end)/2;
                if(A[mid] == number)
                    return mid;
                if(A[mid] > number)
                    end = mid-1;
                if(A[mid] < number)
                    start = mid+1;
            }
            return -1;
        }
        
        public static void main(String[] args){
            BinarySearch test = new BinarySearch();
            int[] A = {3,14,27,31,39,42,55,70,74,81,85,93,98};
            System.out.println("使用迭代法求解number = 70的数组下标结果:"+test.iterationSearch(A, 70));
        }
    }
    

    运行结果:

    使用迭代法求解number = 70的数组下标结果:7
    
  • 相关阅读:
    简约 高效 基层管理体制
    六大纪律
    平行文
    党章
    四大考验 四大危险
    创新、协调、绿色、开放、共享五大发展理念
    微信公众号-->微信html页面缓存问题
    本地kafka环境部署
    >>读懂一本书:樊登读书法>>-->摘抄
    海龟交易法则(第3版)-->摘抄
  • 原文地址:https://www.cnblogs.com/a1439775520/p/12948067.html
Copyright © 2011-2022 走看看