二分查找的两种实现方式

Posted 劲火星空

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了二分查找的两种实现方式相关的知识,希望对你有一定的参考价值。

第一种是递归查找

第二种是非递归查找

public class testMain 
    public static void main(String args[])
        int array[] = new int[]1, 2, 2, 3, 4 ,5, 6 ,7 ,8;
        int res = binarySearch(array, 0, 8, 4);
        int res1 = binarySearch1(array, 0, 8, 4);
        System.out.println("res = "+res);
        System.out.println("res = "+res1);
    
    //使用递归的方式
    public static int binarySearch(int array[], int left, int right, int target)
        if(left < right)
            int mid = (left + right)/2;
            if(array[mid] == target)
                return mid;
            
            if(target < array[mid])
                return binarySearch(array, left, mid-1, target);
            
            if(target > array[mid])
                return binarySearch(array, mid+1, right, target);
            
        
        return -1;
    




    //使用普通的方式
    public static int binarySearch1(int array[], int left, int right, int target)
        while(left <= right)
            int mid = (left + right)/2;
            if(array[mid] == target)
                return mid;
            
            if(target < array[mid])
                right = mid-1;
            
            if(target > array[mid])
                left = mid+1;
            
        
        return -1;
    




以上是关于二分查找的两种实现方式的主要内容,如果未能解决你的问题,请参考以下文章

二分查找的两种实现方式

704二分查找

基础算法模板之二分

深入理解二分的两种实现

列表查找的两种方法

Java实现二分查找算法