python演算法與資料結構 搜尋

2021-09-11 15:53:28 字數 1472 閱讀 6537

搜尋是指查詢乙個數列中乙個元素是否存在

條件:① 要求處理的數列是經過排序的,

② 操作物件支援下標索引,也就是說元素要連續,那麼也就是只能處理順序表

演算法過程:

一,將游標定位到中間位置,判斷目標數字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...

資料結構 演算法 搜尋與查詢

搜尋 搜尋是在乙個專案集合中找到乙個特定專案的演算法過程。搜尋通常的答案是真的或假的,因為該專案是否存在。搜尋的幾種常見方法 順序查詢 二分法查詢 二叉樹查詢 雜湊查詢 二分法查詢 二分查詢又稱折半查詢,優點是比較次數少,查詢速度快,平均效能好 其缺點是要求待查表為有序表,且插入刪除困難。因此,折半...