演算法圖解(二分尋找)

來源:互聯網
上載者:User

標籤:示範   開頭   電話本   time   完成   單位   near   無法   速度   

前言:

今天是第一篇 以後盡量每天寫 看具體時間安排吧 目前一邊學Python、Java、Go還有演算法 所以寫的比較少

主要是Python一天差不多16小時吧 Java、go看時間安排 這次演算法全是用Python示範的 不懂Python的也沒關係

或者可以看一下我前面的文章

演算法是什麼:

演算法是一隻組完成任務的指令  要麼速度快、要麼能解決問題

應該說是為實現某些目的的邏輯 以及 思想 的代碼

 

二分尋找

 

假設你要尋找電話本裡k開頭的人 裡可能會直接滑動到中間 因為你知道k在中間位置

因為電話本是abcdef排序的嘛

定義:

 二分尋找就指從中間開始尋找的邏輯做法

註:

# 二分尋找必須是有序序列  返回其位置

# 無序無法進行二分尋找   返回null

例如:

二分尋找:

  利用二分尋找每次取中間數 有小數可以向上或向下取整數

  100以內的數字   最多7次可以找出來   

普通尋找:

  而普通尋找則是從頭到位遍曆最好的情況是1 一次找出

      最差是100次

 

二分尋找隨著元素的增加並不會改變太大

普通尋找則會隨元素的增加而增加

比如說一個字典內有240000個單詞

普通尋找最差情況:240000次 出結果

二分尋找最差情況:17次出結果

這就很明顯的突出了二分演算法的優勢

####這裡我用()括弧裡的數字代表log的下標

用二分尋找最多需要log(2)n步

其實就是利用對數運算:

對數運算:

      定義: 冪運算的逆運算

例如:

      10**2 = 100      log(10)100 = 2

      10**3 = 1000    log(10)1000=3

      2**5 = 32          log(2)32 = 5

如果有8個元素 你最多需要尋找3次   因為long8 = 3(2**3=8)

1024個元素  最多需要 檢查10個元素  因為 1024 = 10(2**10=1024)

def binary(lst, item):    low = 0    high = len(lst) - 1    while low <= high:        mid = round((low + high) / 2)        guess = lst[mid]        if guess == item:   # 猜對了            return mid        if guess > item:            high = mid - 1  # 猜大了        else:            low = mid + 1   # 猜小了    return Nonemy_list = [1, 3, 5, 7, 9]print(binary(my_list, 3))    # 1 返回的元素下標  索引是0開始的print(binary(my_list, -1))   # None   因為不存在-1元素

 

已耗用時間:

  線性時間(linear time)

        100個數字最多猜100次  40億猜40億次  最多猜的次數等於列表的長度

  對數時間(或log時間)

    100個數字最多猜7次  40億猜32次  

大O標記法:

     簡單尋找每個元素 需要n次 已耗用時間為O(n)

   二分尋找 已耗用時間為O(log(n))

        大O標記法計算的是運算元

  O(log n) 對數時間  包括二分尋找

  O(n)  線性時間

  O(n * log n)快速排序演算法

  O(n**2)速度較慢排序法演算法

  O(n!)非常慢的演算法

 

小結:

     二分尋找比簡單尋找快的多

     O(log n)比O(n)快,需要搜尋的元素越多,前者比後者就快的越多

  演算法已耗用時間並不以秒為單位

  演算法已耗用時間是從其增速的角度度量的

  演算法的已耗用時間用大O標記法表示

 

演算法圖解(二分尋找)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.