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

    递归法

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

    迭代法

    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
    
  • 相关阅读:
    android(eclipse)界面控件以及活动总结(二)
    android(eclipse)新手常见问题总结(一)
    易 忽略 知识 点
    switfmailer 邮件时间错误 处理
    error_log
    $_SERVER['URI']
    apache 服务器配置
    sock
    __autolaod
    delete CDU
  • 原文地址:https://www.cnblogs.com/a1439775520/p/13074427.html
Copyright © 2011-2022 走看看