1. 程式人生 > >一, 演算法之 二分查詢

一, 演算法之 二分查詢

        上半年看了一點演算法的內容, 做點筆記.

        演算法是 一組完成任務的指令. (任何daim程式碼片段都可視為演算法.)

        二分查詢,其實我們生活中可能已經接觸過,只不過不知道它的演算法名稱而已. 記得上學那會查英漢字典,但遇見一個不認識的單詞的時候, 我們去查詢英語單詞時, 首先會根據英語單詞的首字母,猜測它在字典的上半部分還是下半部分, 這麼粗略的猜測, 其實就已經使用了二分查詢.

        二分查詢, 還有一個hend很典型的遊戲場景. 一個人 甲 想一個1~100的數字, 另一個人 乙 一定可以在7步之內找到這個數字.

      具體步驟:

      1, 乙  猜 50 ,  甲 告知 50 是猜測的大了 還是 小了 .

      2, 小了,  排除了一半的數字,  乙 猜測 75, 甲 告知75 是猜測的大了 還是 小了

      3, 大了, 剩下的數字又排除一半, 每次都猜測的都是中間數字,從而每次都可以排除一半的數字. 接下來 乙猜測 63.

       .................不管猜測的shi是哪一個數字, 都會在7次之內猜測到,每次猜測都會排除很多數字.

    以上說明顯示如果想要使用二分查詢, 必須是一組有序的組合. 

     一般用大O表示法 討論演算法的執行時間. log n, 在演算法中一般表示以2 為底. 

     二分查詢查詢法的 執行時間 表示為O(logn)