天天看點

Java十大算法(一)——非遞歸二分查找

在前面的文章中我們寫過一篇關于二分查找的遞歸實作(https://blog.csdn.net/lmlzww/article/details/107029360)那麼除過遞歸的實作方式還用一種實作便是我們的非遞歸實作,非遞歸二分查找算法的實作主要是通過在方法體中設定辨別變量來實作對查詢範圍的一個縮減。

二分查找的算法的核心就是通過進一步縮減查詢的範圍來提高算法的效率,是以所不管是通過哪種代碼設計模式來實作核心的就是傳遞、表示查詢範圍的縮減。

Java十大算法(一)——非遞歸二分查找

算法代碼實作:

public class SearchNoRecursion {
    public static void main(String[] args) {
        int arrays[] ={1,3,8,90,234,567,890,1111,4566};
        searchNoRecur(arrays,890);
    }
    public static void searchNoRecur(int[] arr,int targetValue){
        int left = 0;
        int right = arr.length-1;
        int middle = (left+right)/2;
        while (left<=right){
            if(arr[middle]==targetValue){
                System.out.println("Searching successfully , index is "+middle);
                return;
            }else if(arr[middle]<targetValue){
                left = middle+1;
                middle = (left+right)/2;
            }else if(arr[middle]>targetValue){
                right = middle-1;
                middle = (left+right)/2;
            }
        }
        System.out.println("Sorry,targetValue is not exist in targetArrays");
    }
}
           

繼續閱讀