時間:2020-11-18來源:www.outletmksalestore.com作者:電腦系統城
一般我們在解決問題時候,經常能碰到好幾種解決方式,總歸是有最優,還有最不推薦的選擇的,針對搜索算法也一樣,因為能實現的方式也有很多個,因此,不知道大家在什么場景里使用這些算法,反正小編都把這些算法整理出來了,供大家選擇,另外針對個人理解,大家也可以參考哪個更好使用哦~
搜索算法
線性搜索
按一定的順序檢查數組中每一個元素,直到找到所要尋找的特定值為止。是最簡單的一種搜索算法。
二分搜索算法
這種搜索算法每一次比較都使搜索范圍縮小一半。
插值搜索算法
是根據要查找的關鍵字key與順序表中最大、最小記錄的關鍵字比較后的查找方法,它假設輸入數組是線性增加的。
跳躍搜索算法
需要通過固定的跳躍間隔,這樣它相比二分查找效率提高了很多。
快速選擇
快速選擇一般是以原地算法的方式實現,除了選出第k小的元素,數據也得到了部分地排序。
禁忌搜索
是一種現代啟發式算法,一個用來跳脫局部最優解的搜索方法。
關于算法的知識點擴展:
線性搜索
1 2 3 4 5 6 7 8 9 10 11 12 13 |
def linear_search(data, search_for): """線性搜索""" search_at = 0 search_res = False while search_at < len (data) and search_res is False : if data[search_at] = = search_for: search_res = True else : search_at + = 1 return search_res lis = [ 5 , 10 , 7 , 35 , 12 , 26 , 41 ] print (linear_search(lis, 12 )) print (linear_search(lis, 6 )) |
插值搜索
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
def insert_search(data,x): """插值搜索""" idx0 = 0 idxn = ( len (data) - 1 ) while idx0 < = idxn and x > = data[idx0] and x < = data[idxn]: mid = idx0 + int ((( float (idxn - idx0) / (data[idxn] - data[idx0])) * (x - data[idx0]))) if data[mid] = = x: return "在下標為" + str (mid) + "的位置找到了" + str (x) if data[mid] < x: idx0 = mid + 1 return "沒有搜索到" + str (x) lis = [ 2 , 6 , 11 , 19 , 27 , 31 , 45 , 121 ] print (insert_search(lis, 31 )) print (insert_search(lis, 3 )) |
到此這篇關于python搜索算法原理及實例講解的文章就介紹到這了
2022-03-01
PHP如何從txt文件中讀取數據詳解2022-03-01
分享5個方便好用的Python自動化腳本2021-03-29
Python中pycharm編輯器界面風格修改方法