簡介二分尋找演算法與相關的Python實現樣本

來源:互聯網
上載者:User
二分尋找Binary Search的思想:
以有序表表示靜態尋找表時,尋找函數可以用二分尋找來實現。
二分尋找(Binary Search)的尋找過程是:先確定待查記錄所在的區間,然後逐步縮小區間直到找到或找不到該記錄為止。
1二分尋找的時間複雜度是O(log(n)),最壞情況下的時間複雜度是O(n)。
假設 low 指向區間下界,high 指向區間上界,mid 指向區間的中間位置,則 mid = (low + high) / 2;
具體過程:
1.先將關鍵字與 mid 指向的元素比較,如果相等則返回mid。
2.關鍵字小於 mid 指向的元素關鍵字,則在 [ low, mid-1 ]區間中繼續進行二分尋找。
3.關鍵字大於mid 指向的元素關鍵字,則在[ mid +1 , high] 區間中繼續進行二分尋找。

用Python實現二分尋找樣本:

>>> def find(self, num):  l = len(self)  first = 0  end = l - 1  mid = 0  if l == 0:   self.insert(0,num)   return False  while first < end:   mid = (first + end)/2   if num > self[mid]:    first = mid + 1   elif num < self[mid]:    end = mid - 1   else:    break  if first == end:   if self[first] > num:    self.insert(first, num)    return False   elif self[first] < num:    self.insert(first + 1, num)    return False   else:    return True  elif first > end:   self.insert(first, num)   return False  else:   return True>>> list_d = ['a','b','c','d','e','f','d','t']>>> value_d = 't'>>> aa=find(list_d,value_d)>>> aaTrue>>> value_d='ha'>>> aa=find(list_d,value_d)>>> aaFalse
  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.