搜尋是指查詢乙個數列中乙個元素是否存在
條件:① 要求處理的數列是經過排序的,
② 操作物件支援下標索引,也就是說元素要連續,那麼也就是只能處理順序表
演算法過程:
一,將游標定位到中間位置,判斷目標數字t與當前的數字(n)的大小,如果t大於n,則向右查詢,反之,向左迭代查詢
時間複雜度:
最壞情況:o(log(n))[對半查詢,2x=n]
最優情況:o(1)[要找的數剛好在中間]
def
binary_search
(alist,item)
:'''alist為從小到大排的有序數列'''
n=len(alist)
if n<=0:
return
false
mid=n//
2if alist[mid]
return binary_search(alist[mid+1:
],item)
elif alist[mid]
>item:
return binary_search(alist[
:mid]
,item)
else
:return
true
# return false
defbinary_search2
(alist,item)
: head=
0 rear=
len(alist)-1
while head<=rear:
mid=
(head+rear)//2
if alist[mid]
==item:
return
true
elif alist[mid]
>item:
rear=mid-
1# rear-=1,這裡要注意
else
: head=mid+
1# head+=1
return
false
defbinary_search1
(alist,num,left,right)
:'''自創的,可行'''
if left>right:
return
false
mid=
(left+right)//2
if num: right=mid-
1return binary_search1(alist,num,left,right)
elif num==alist[mid]
:return
true
else
: left=mid+
1return binary_search1(alist,num,left,right)
資料結構與演算法 搜尋
搜尋是在乙個專案集合中找到乙個特定專案的演算法過程,返回乙個布林值。搜尋的幾種常見方法 順序查詢 二分法查詢 二叉樹查詢 雜湊查詢 二分查詢也叫折半查詢,優點是比較次數少,但是只能是在有序的序列中才能用此方法,查詢過程 首先,假設表中元素是按公升序排列,將表中間位置記錄的關鍵字與查詢關鍵字比較,如果...
python資料結構 搜尋演算法
下面是幾種搜尋列表的幾種演算法和它的複雜度分析。python的min函式返回列表中的最小的項。下面是為了研究它的複雜度開發出來的演算法。usr bin python coding utf 8 def indexofmin lyst minindex 0 currentindex 1 while cu...
資料結構 演算法 搜尋與查詢
搜尋 搜尋是在乙個專案集合中找到乙個特定專案的演算法過程。搜尋通常的答案是真的或假的,因為該專案是否存在。搜尋的幾種常見方法 順序查詢 二分法查詢 二叉樹查詢 雜湊查詢 二分法查詢 二分查詢又稱折半查詢,優點是比較次數少,查詢速度快,平均效能好 其缺點是要求待查表為有序表,且插入刪除困難。因此,折半...