Java基本算法——二分查找算法

二分查找算法

每次查找取數(shù)組中位數(shù)的值進(jìn)行比較,
如果目標(biāo)值值大于中位數(shù)的值,則截取中位數(shù)右側(cè)的數(shù)組再次進(jìn)行二分查找
如果目標(biāo)值小于中位數(shù)的值,則截取中位數(shù)左側(cè)的數(shù)組再次進(jìn)行二分查找
直到找到相對(duì)應(yīng)的中位數(shù)才終止查找算法。
即每經(jīng)過(guò)一次比較,查找范圍就縮小一半。

while循環(huán)實(shí)現(xiàn)二分查找

    private static int binSearch(int array[], int value){   int start=0;
        int end =array.length-1;
        int middle;

        while(start<=end){
            middle = (end-start)/2+start;
            if(array[middle] < value){
                start = middle+1;
            }else if (array[middle]>value){
                end = middle-1;
            }else{
                return middle;
            }
        }

        return -1;
    }

遞歸實(shí)現(xiàn)二分查找算法

  private static int binSearch(int array[],int start,int end,int value){
        int middle = (end-start)/2+start;
        if(array[middle]==value){
            return middle;
        }

        if(start>=end){
            return -1;
        } else if (array[middle]>value){
            return binSearch(array,start,middle-1,value);
        }else {
            return binSearch(array,middle+1,end,value);
        }

    }

main方法中調(diào)用

    public static void main(String[] args) {
        int array[] ={1,2,3,4,5};
        System.out.println("args = [" + binSearch(array,0,array.length-1,3) + "]");
    }

注意事項(xiàng)

要求進(jìn)行查找的數(shù)組必須是有序數(shù)組

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容