# 什麼叫演算法# 計算的方法:人腦複雜 計算機簡單
#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...