zoukankan      html  css  js  c++  java
  • 二分搜索

    分治的经典算法。

    import java.util.Random;
    import java.util.Arrays;
    
    public class BinarySearch{
    
        public static int binarySearch(int[] A, int x){
            return binarySearchDo(A, x, 0, A.length-1);
        }
    
        private static int binarySearchDo(int[] A, int x, int low, int high){
            if(low > high)
                return -1;
            int mid = (low + high) / 2;
            if(A[mid] == x)
                return mid;
            //Divide and Conquer
            if(x < A[mid])
                return binarySearchDo(A, x, low, mid-1);
            return binarySearchDo(A, x, mid+1, high);
        }
        
        public static int binarySearchIter(int[] A, int x){
            //Iteration
            int low = 0;
            int high = A.length-1;
            while(low <= high){
                int mid = (low + high) / 2;
                if(A[mid] == x)
                    return mid;
                if(x < A[mid])
                    high = mid - 1;
                else
                    low = mid + 1;
            }
            return -1;
        }
    
        public static void main(String[] args) {
            //Unit Testing
            int n = 10;
            int[] A = new int[n];
            Random rand = new Random();
            for(int i = 0; i < A.length; i ++){
                A[i] = rand.nextInt(1<<20) % 100;
            }
            int x = A[rand.nextInt(A.length)];
            Arrays.sort(A);
            System.out.println(Arrays.toString(A));
            System.out.println(x);
            System.out.println(binarySearch(A, x));
            System.out.println(binarySearchIter(A, x));
            x = -1;
            System.out.println(binarySearch(A, x));
            System.out.println(binarySearchIter(A, x));
        }
    }
    Java
  • 相关阅读:
    第二次编程作业总结
    structs get 方法乱码问题
    网址记录
    尸体解剖报告
    最后冲刺
    回答自己的提问——对自己最大的反馈
    构建之法13-17章读后感
    典型场景
    对其他各团队的评价
    用户调研
  • 原文地址:https://www.cnblogs.com/7hat/p/3393610.html
Copyright © 2011-2022 走看看