二分查詢的兩種實現方式

2021-10-02 21:10:55 字數 841 閱讀 3993

二分查詢是一種常用的演算法,其輸入是乙個有序的元素列表(必須是有序的),如果查詢的元素包含在列表中,二分查詢返回其位置,否則返回false。由於二分查詢每次都是將序列折半,因此時間複雜度為o(logn)。下面按照非遞迴和遞迴兩種形式利用python進行實現:

def

er_fen

(li,value)

: start=

0 end=

len(li)-1

while start<=end:

mid =

(start + end)//2

if value: end=mid

elif value>li[mid]

: start=mid+

1else

:return mid

return

false

def

er_fen

(li,value,start,end)

:if start<=end:

mid =

(start + end)//2

if li[mid]

return er_fen_digui(li,value,mid+

1,end)

elif li[mid]

>value:

return er_fen_digui(li,value,start,mid)

else

:return mid

else

:return

false

二分查詢的兩種實現

面試中經常會問到二分查詢,二分查詢的兩種實現 第一種是用遞迴實現的,第二種使用迴圈實現的。package com.lzw public class binary text t new text system.out.println 第一種二分查詢 system.out.println t.binar...

二分查詢演算法的兩種方式

二分查詢演算法 binary search 二分查詢又稱折半查詢,優點是比較次數少,查詢速度快,平均效能好,占用系統記憶體較少 缺點是要求待查表為有序表,且插入刪除困難。因此,折半查詢方法適用於不經常變動而查詢頻繁的有序列表。首先,假設表中元素是按公升序排列,將表中間位置記錄的關鍵字與查詢關鍵字比較...

兩種二分查詢

給定按照非遞減序的陣列和關鍵字key,返回key在給定陣列中的下標,若不存在則返回 1。二分查詢的關鍵是控制好下標low和high,以及返回值。最後要返回的是下標low的值 比如給定排好序的陣列nums和要查詢的關鍵字key,返回關鍵字key在陣列中的下標。假設要查詢的關鍵字在陣列中存在。這兩個方法...