国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

簡介二分查找算法與相關(guān)的Python實(shí)現(xiàn)示例

2019-11-25 17:04:45
字體:
供稿:網(wǎng)友

二分查找Binary Search的思想:
以有序表表示靜態(tài)查找表時(shí),查找函數(shù)可以用二分查找來實(shí)現(xiàn)。
二分查找(Binary Search)的查找過程是:先確定待查記錄所在的區(qū)間,然后逐步縮小區(qū)間直到找到或找不到該記錄為止。
1二分查找的時(shí)間復(fù)雜度是O(log(n)),最壞情況下的時(shí)間復(fù)雜度是O(n)。
假設(shè) low 指向區(qū)間下界,high 指向區(qū)間上界,mid 指向區(qū)間的中間位置,則 mid  = (low + high) / 2;
具體過程:
1.先將關(guān)鍵字與 mid 指向的元素比較,如果相等則返回mid。
2.關(guān)鍵字小于 mid 指向的元素關(guān)鍵字,則在 [ low,  mid-1 ]區(qū)間中繼續(xù)進(jìn)行二分查找。
3.關(guān)鍵字大于mid 指向的元素關(guān)鍵字,則在[ mid +1 , high] 區(qū)間中繼續(xù)進(jìn)行二分查找。

用Python實(shí)現(xiàn)二分查找示例:

>>> 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

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 福泉市| 县级市| 梧州市| 宽城| 迁西县| 吉安县| 昌图县| 红河县| 盐津县| 凤山市| 双桥区| 大庆市| 托克逊县| 文山县| 德安县| 司法| 磐安县| 恩施市| 馆陶县| 吉林省| 巢湖市| 襄城县| 南陵县| 肥西县| 乡宁县| 三都| 宁南县| 平顺县| 永仁县| 易门县| 安顺市| 泽普县| 九龙县| 海南省| 闽清县| 陆良县| 久治县| 台北市| 金秀| 文化| 柞水县|