国产精品天干天干,亚洲毛片在线,日韩gay小鲜肉啪啪18禁,女同Gay自慰喷水

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

【算法圖解】個(gè)人學(xué)習(xí)筆記1——二分查找

2021-10-18 07:47 作者:達(dá)達(dá)里A  | 我要投稿

#二分查找算法是一種在有序數(shù)組中查找某一特定元素的搜索算法。

# 搜素過程從數(shù)組的中間元素開始,如果中間元素正好是要查找的元素,

# 則搜素過程結(jié)束;如果某一特定元素大于或者小于中間元素,則在數(shù)組大于或小于中間元素的那一半中查找,

# 而且跟開始一樣從中間元素開始比較。如果在某一步驟數(shù)組為空,

# 則代表找不到。這種搜索算法每一次比較都使搜索范圍縮小一半。

# 折半搜索每次把搜索區(qū)域減少一半,時(shí)間復(fù)雜度為O(log2n)? 。

#兩種Python代碼示例如下:

def binary_search(list,item):

? ? #low為最小數(shù),high為最大數(shù)

? ? low=0

? ? #最大數(shù)high為查找元素-1

? ? high=len(list)-1

? ? #二分查找循環(huán),從中間開始尋找

? ? while low<=high:


? ? ? ? mid=int((low+high)/2)


? ? ? ? guess=list[mid]

? ? ? ? #判斷3中猜測情況

? ? ? ? if guess==item:

? ? ? ? ? ? return mid


? ? ? ? elif guess>item:

? ? ? ? ? ? return mid-1

?

? ? ? ? else:

? ? ? ? ? ? low=mid+1

? ? else:

? ? ? ? # 目標(biāo)不存在

? ? ? ? return None


My_list=[ 2, 3, 4, 10, 120,500,0]


My_item=800


result=binary_search(My_list,My_item)


if result != None:

? ? print ("元素在數(shù)組中的索引為 %d" % result )

else:

? ? print ("元素不在數(shù)組中")


# 返回 x 在 arr 中的索引,如果不存在返回 -1

#r為arr素組長度 x為查找目標(biāo)元素

def binarySearch (arr, l, r, x):

?

? ? # 基本判斷

? ? if r >= l:

?

? ? ? ? mid = int(l + (r - l)/2)

?

? ? ? ? # 元素整好的中間位置

? ? ? ? if arr[mid] == x:

? ? ? ? ? ? return mid

? ? ? ? ?

? ? ? ? # 元素小于中間位置的元素,只需要再比較左邊的元素

? ? ? ? elif arr[mid] > x:

? ? ? ? ? ? return binarySearch(arr, l, mid-1, x)

?

? ? ? ? # 元素大于中間位置的元素,只需要再比較右邊的元素

? ? ? ? else:

? ? ? ? ? ? return binarySearch(arr, mid+1, r, x)

?

? ? else:

? ? ? ? # 不存在

? ? ? ? return -1

?

# 測試數(shù)組

arr = [ 2, 3, 4, 10, 40 ]

x = 2

?

# 函數(shù)調(diào)用

result = binarySearch(arr, 0, len(arr)-1, x)

?

if result != -1:

? ? print ("元素在數(shù)組中的索引為 %d" % result )

else:

? ? print ("元素不在數(shù)組中")



【算法圖解】個(gè)人學(xué)習(xí)筆記1——二分查找的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國家法律
土默特右旗| 永胜县| 子洲县| 广州市| 镇远县| 横山县| 唐河县| 西平县| 高青县| 汉中市| 南江县| 西昌市| 金堂县| 孝昌县| 鄱阳县| 钟祥市| 凌海市| 宜兴市| 龙游县| 许昌县| 赣榆县| 井冈山市| 孝昌县| 白河县| 南岸区| 横峰县| 洛川县| 武陟县| 威宁| 平谷区| 正定县| 朝阳区| 奎屯市| 清涧县| 新竹县| 云龙县| 肇州县| 杭锦后旗| 达日县| 五华县| 昭苏县|