初識演算法 二分查詢

2022-09-05 06:06:14 字數 1947 閱讀 6100

# 什麼叫演算法

# 計算的方法:人腦複雜 計算機簡單

#99*13=1287=13*100-13

#查詢 :找資料

#排序 :

# 我們學習的演算法,都是過去式

# 了解基礎的演算法 才能創造出更好的演算法

# 不是所有的事情都能套用現成的方法解決的

# 有些時候會用到學過的演算法知識來解決新的問題

#二分查詢演算法 必須處理有序的列表

l = [2,3,4,5,9,12,15,19,20,37,40,42,46,48,49,52,55,56,63,66,68,69,70,72,75,78,79,80

]#**實現

# def find(l,aim):

# mid_index = len(l) //

2# if l[mid_index] # l[mid_index + 1

:]# new_l =l[mid_index + 1

:]# mid_index = len(new_l) //

2# find(new_l,aim)

# elif l[mid_index] >aim :

# new_l =l[:mid_index]

# find(new_l, aim)

#

else

:# print(

'找到了

',mid_index,l[mid_index])

## find(l,66)

# def find(l,aim,start = 0,end =len(l)):

# mid_index = (end - start) //

2 +start #計算中間值

# if l[mid_index] # find(l,aim,start = mid_index,end =end )

# elif l[mid_index] >aim :

# find(l,aim,start=start,end=mid_index-1

)#

else

:# print(

'找到了

',mid_index,aim)

## find(l,

66) #找到了 19

66# print(l.index(

66)) #19

# 引數 end

#返回值

#找不到的話怎麼辦

# 引數 end

#找不到的話怎麼辦

def find(l,aim,start = 0,end =none):

end = len(l) if end is none else

end mid_index = (end - start) //

2 +start #計算中間值

if start <=end:

if l[mid_index] return find(l,aim,start = mid_index+1,end =end )

elif l[mid_index] >aim :

return find(l,aim,start=start,end=mid_index-1

)

else

:

return

mid_index

#print(

'找到了

',mid_index,aim)

else

:

return

'找不到這個值

'ret = find(l,66) #找到了 19

66print(ret) #

19

查詢演算法 二分查詢

利用二分查詢演算法查詢某乙個元素,前提條件是該被查詢的元素是乙個已經有序的陣列。二分查詢的思想是將陣列元素的最高位 high 和最低位 low 進行標記,取陣列元素的中間 mid 和和要查詢的值 key 進行比較,如果目標值比中間值要大,則將最低位設定為mid 1,繼續進行查詢。如果目標值小於中間值...

查詢演算法 二分查詢

二分查詢的思路是很簡單的,前提是這組資料是有順序的。思路是從中間找乙個數,判斷大小,如果數比中間數大,說明在中間數到結尾的數中,如果小於,則說明在開始和中間數之間,經過多次相同操作,就可以得到我們想查詢的數時間複雜度就是 o logn 非遞迴的實現 const testarr let i 0whil...

查詢演算法 二分查詢

二分查詢是乙個常用的查詢演算法,其原理在於通過不斷切分乙個規則排序,對半的去尋找目標元素所在的區間與位置。但是其有乙個前提,那就是資料結構需要是順序儲存結構,並且關鍵字大小有序排列。例子如下 例 有乙個數列 12,23,45,56,67,89 請使用二分查詢找到56的位置 解 首先mid 0 5 2...