溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

java二分查找的原理如何實(shí)現(xiàn)

發(fā)布時(shí)間:2022-06-01 16:26:10 來(lái)源:億速云 閱讀:167 作者:iii 欄目:大數(shù)據(jù)

這篇文章主要介紹“java二分查找的原理如何實(shí)現(xiàn)”的相關(guān)知識(shí),小編通過(guò)實(shí)際案例向大家展示操作過(guò)程,操作方法簡(jiǎn)單快捷,實(shí)用性強(qiáng),希望這篇“java二分查找的原理如何實(shí)現(xiàn)”文章能幫助大家解決問(wèn)題。

1.二分查找步驟描述

(1)首先確定整個(gè)查找區(qū)間的中間位置 mid = ( left + right )/ 2

(2)用待查關(guān)鍵字值與中間位置的關(guān)鍵字值進(jìn)行比較;

若相等,則查找成功

若大于,則在后(右)半個(gè)區(qū)域繼續(xù)進(jìn)行折半查找

若小于,則在前(左)半個(gè)區(qū)域繼續(xù)進(jìn)行折半查找

(3)對(duì)確定的縮小區(qū)域再按折半公式,重復(fù)上述步驟。

最后,得到結(jié)果:要么查找成功, 要么查找失敗。折半查找的存儲(chǔ)結(jié)構(gòu)采用一維數(shù)組存放。 折半查找算法舉例

java二分查找的原理如何實(shí)現(xiàn)2.要求

(1)必須采用順序存儲(chǔ)結(jié)構(gòu)。

(2)必須按關(guān)鍵字大小有序排列。

3.實(shí)例

public class Demo {
 
    public static void main(String[] args) {
        int[] arr={-1,0,3,5,9,12};//查找的數(shù)組
        int searchNum=13;//查找的目標(biāo)數(shù)
        Arrays.sort(arr);
 
        int resultOne=binarySearchOne(arr,searchNum,0,arr.length-1);
        System.out.println(resultOne);
 
        int resultTwo=binarySearchTwo(arr,searchNum);
        System.out.println(resultTwo);
    }
 
    /**
     * 遞歸實(shí)現(xiàn)
     * @param arr
     * @param searchNum
     * @param start
     * @param end
     * @return
     */
    public static int binarySearchOne(int[] arr,int searchNum,int start,int end){
        if(start>end)
            return -1;
        int middle=(start+end)/2;
        if(searchNum<arr[middle])
            return binarySearchOne(arr,searchNum,start,middle-1);
        else if(searchNum>arr[middle])
            return binarySearchOne(arr,searchNum,middle+1,end);
        else
            return middle;
    }
 
    /**
     * 非遞歸實(shí)現(xiàn)
     * @param arr
     * @param searchNum
     * @return
     */
    private static int binarySearchTwo(int[] arr, int searchNum) {
        int start=0;
        int end=arr.length-1;
        while(start<=end){
            int middle=(start+end)/2;
            if(searchNum<arr[middle])
                end=middle-1;
            else if(searchNum>arr[middle])
                start=middle+1;
            else
                return middle;
        }
        return -1;
    }
}

關(guān)于“java二分查找的原理如何實(shí)現(xiàn)”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識(shí),可以關(guān)注億速云行業(yè)資訊頻道,小編每天都會(huì)為大家更新不同的知識(shí)點(diǎn)。

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI