成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

二分查找(BinarySearch)

leeon / 3451人閱讀

摘要:基本思想二分查找算法的基本思想就是在一個(gè)有序的默認(rèn)我們都是升序,如果是降序后面的條件置反即可數(shù)組中將要查找的值和數(shù)組中間的那個(gè)元素比較如果要找的數(shù)大于中間的元素就從中間的元素后一個(gè)元素開始到數(shù)組最后一個(gè)元素這個(gè)區(qū)間里面繼續(xù)尋找如果要找的數(shù)小

基本思想

二分查找算法的基本思想就是:

在一個(gè)有序的(默認(rèn)我們都是升序,如果是降序后面的條件置反即可)數(shù)組中;

將要查找的值和數(shù)組中間的那個(gè)元素比較;

如果要找的數(shù)大于中間的元素,就從中間的元素后一個(gè)元素開始到數(shù)組最后一個(gè)元素這個(gè)區(qū)間里面繼續(xù)尋找;

如果要找的數(shù)小于中間的元素,就從0開始到此時(shí)的中間的元素這個(gè)區(qū)間內(nèi)繼續(xù)尋找;

如果它們相等,那么此時(shí)我們要找的元素就是當(dāng)前中間的元素,直接返回下標(biāo)即可。

java代碼實(shí)現(xiàn)
private int binarySearch(int[] arr,int k){
        int index = -1;
        int start = 0;
        int end = arr.length;
        while (start < end){
            //  這里有可能會(huì)溢出,有兩種解決方案
            //  1、 修改為 start+(end-start)/2
            //  2、 通過(guò)位移操作,這樣也可以完成除2,在jdk源碼中使用的是這種方法
            int mid = (end + start) / 2;
            //  如果小于中間的元素就從0開始到當(dāng)前中間的下標(biāo)這個(gè)區(qū)間里面繼續(xù)尋找
            if (k < arr[mid]){
                end = mid;
            //  如果大于中間的元素就從當(dāng)前的下標(biāo)到最后一個(gè)元素這個(gè)區(qū)間里面繼續(xù)尋找
            }else if (k > arr[mid]){
                start = mid + 1;
            //  如果等于中間的元素就說(shuō)明當(dāng)前元素就是我們要找的下標(biāo)
            }else {
                return mid;
            }
        }
        //  如果循環(huán)結(jié)束了都沒(méi)找到說(shuō)明這個(gè)數(shù)組里面沒(méi)有我們要找的元素
        return -1;
    }
時(shí)間復(fù)雜度分析

最好的情況是我們要找的就是中間那個(gè),此時(shí)的時(shí)間復(fù)雜度為O(1);

最壞的情況是我們找完最后一趟才找到甚至沒(méi)有找到,這個(gè)時(shí)候的時(shí)間復(fù)雜度為O(logN);

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/72094.html

相關(guān)文章

  • 數(shù)據(jù)結(jié)構(gòu)與算法:二分查找

    摘要:為檢查長(zhǎng)度為的列表,二分查找需要執(zhí)行次操作。最后需要指出的一點(diǎn)是高水平的讀者可研究一下二叉樹關(guān)于二叉樹,戳這里數(shù)據(jù)結(jié)構(gòu)與算法二叉樹算法常見練習(xí)在一個(gè)二維數(shù)組中,每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。 常見數(shù)據(jù)結(jié)構(gòu) 簡(jiǎn)單數(shù)據(jù)結(jié)構(gòu)(必須理解和掌握) 有序數(shù)據(jù)結(jié)構(gòu):棧、隊(duì)列、鏈表。有序數(shù)據(jù)結(jié)構(gòu)省空間(儲(chǔ)存空間?。?無(wú)序數(shù)據(jù)結(jié)構(gòu):集合、字典、散列表,無(wú)序...

    zsirfs 評(píng)論0 收藏0
  • 數(shù)據(jù)結(jié)構(gòu)與算法:二分查找

    摘要:為檢查長(zhǎng)度為的列表,二分查找需要執(zhí)行次操作。最后需要指出的一點(diǎn)是高水平的讀者可研究一下二叉樹關(guān)于二叉樹,戳這里數(shù)據(jù)結(jié)構(gòu)與算法二叉樹算法常見練習(xí)在一個(gè)二維數(shù)組中,每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。 常見數(shù)據(jù)結(jié)構(gòu) 簡(jiǎn)單數(shù)據(jù)結(jié)構(gòu)(必須理解和掌握) 有序數(shù)據(jù)結(jié)構(gòu):棧、隊(duì)列、鏈表。有序數(shù)據(jù)結(jié)構(gòu)省空間(儲(chǔ)存空間?。?無(wú)序數(shù)據(jù)結(jié)構(gòu):集合、字典、散列表,無(wú)序...

    you_De 評(píng)論0 收藏0
  • 數(shù)據(jù)結(jié)構(gòu)與算法:二分查找

    摘要:為檢查長(zhǎng)度為的列表,二分查找需要執(zhí)行次操作。最后需要指出的一點(diǎn)是高水平的讀者可研究一下二叉樹關(guān)于二叉樹,戳這里數(shù)據(jù)結(jié)構(gòu)與算法二叉樹算法常見練習(xí)在一個(gè)二維數(shù)組中,每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。 常見數(shù)據(jù)結(jié)構(gòu) 簡(jiǎn)單數(shù)據(jù)結(jié)構(gòu)(必須理解和掌握) 有序數(shù)據(jù)結(jié)構(gòu):棧、隊(duì)列、鏈表。有序數(shù)據(jù)結(jié)構(gòu)省空間(儲(chǔ)存空間?。?無(wú)序數(shù)據(jù)結(jié)構(gòu):集合、字典、散列表,無(wú)序...

    gotham 評(píng)論0 收藏0
  • 【程序員必會(huì)十大算法】之二分查找算法

    摘要:遞歸實(shí)現(xiàn)不考慮相同數(shù)二分查找,不考慮有相同數(shù)的情況遞歸找到了考慮有相同數(shù)二分查找考慮有相同元素的情況遞歸要查找的值 1.遞歸實(shí)現(xiàn) ①不考慮相同數(shù) /** * 二分查...

    YFan 評(píng)論0 收藏0
  • 查找算法之二分查找

    摘要:查找算法之二分查找法思想二分查找法的思想非常簡(jiǎn)單,對(duì)于一個(gè)有序數(shù)列,找它中間的元素,看是否是查找目標(biāo),如果不是,就看這個(gè)查找目標(biāo)是小于還是大于中間元素,然后在對(duì)應(yīng)的區(qū)間內(nèi)重復(fù)上述過(guò)程。 查找算法之二分查找法 思想 二分查找法的思想非常簡(jiǎn)單,對(duì)于一個(gè)有序數(shù)列,找它中間的元素,看是否是查找目標(biāo),如果不是,就看這個(gè)查找目標(biāo)是小于還是大于中間元素,然后在對(duì)應(yīng)的區(qū)間內(nèi)重復(fù)上述過(guò)程。 算法 需要注...

    Jochen 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

閱讀需要支付1元查看
<