data=[1,3,4,5,6]遞迴:(效率不高)value=1
def linear_search(data,value):
flag=false
for i in range(0,len(data)):
if data[i]==value:
# return i
flag=true
print('找到了,在第%s個位置'%i)
if not flag:
print('查詢失敗')
# linear_search(data,value)
遞迴需要有結束條件(len(data)<=1),每一次遞迴的問題規模都減小
改變的是每次傳入的data
#遞迴實現def bin_search2(data,value):
mid=len(data)/2
if len(data)>1:
if value>data[mid]:
bin_search2(data[mid+1:],value)
elif value非遞迴:
改變的是low和high指標的指向
#練習info=[,,
,]def bin_search(data,value):
low=0
high=len(data)-1
while low<=high:
mid=(low+high)//2
if data[mid]['id']==value:#取字典的value 用dic[key]
return (mid,data[mid])
elif data[mid]['id']
low=mid+1
else:
high=mid-1
else:
return (0,none)#根據返回值判斷是否查到這個人
while true:
id=int(input('請輸入需要查詢的學號(退出請按q):').strip())
# print(type(id))
if id=='q':
break
else:
num,info=bin_search(info,id)
if info=='none':
print('查無此人')
else:
print('info:%s'%info)
常見的查詢演算法
一 直接查詢 1.1 實現原理 從第乙個開始,依次向後挨個對比,直到找到所需的字元為止。1.2 時間複雜度 o n 其中n是字元的總個數。1.3 實現 public class directfind int target 74 for int i 0 iif target array i 二 二分法...
hash演算法原理及常見函式
hash,一般翻譯做 雜湊 也有直接音譯為 雜湊 的,就是把任意長度的輸入,通過雜湊演算法,變換成固定長度的輸出,該輸出就是雜湊值。雜湊表,它是基於快速訪問的角度設計的,也是一種典型的 空間換時間 的做法。顧名思義,該資料結構可以理解為乙個線性表,但是其中的元素不是緊密排列的,而是可能存在空隙。雜湊...
常見hash演算法的原理
分類 演算法和資料結構 2011 11 22 13 12 1579人閱讀收藏 舉報雜湊表,它是基於快速訪問的角度設計的,也是一種典型的 空間換時間 的做法。顧名思義,該資料結構可以理解為乙個線性表,但是其中的元素不是緊密排列的,而是可能存在空隙。雜湊表 hash table,也叫雜湊表 是根據關鍵碼...