這篇文章主要介紹python如何實現(xiàn)有序查找算法,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!
成都創(chuàng)新互聯(lián)是專業(yè)的黎城網(wǎng)站建設(shè)公司,黎城接單;提供成都網(wǎng)站設(shè)計、成都做網(wǎng)站,網(wǎng)頁設(shè)計,網(wǎng)站設(shè)計,建網(wǎng)站,PHP網(wǎng)站建設(shè)等專業(yè)做網(wǎng)站服務(wù);采用PHP框架,可快速的進行黎城網(wǎng)站開發(fā)網(wǎng)頁制作和功能擴展;專業(yè)做搜索引擎喜愛的網(wǎng)站,專業(yè)的做網(wǎng)站團隊,希望更多企業(yè)前來合作!二分法是一種快速查找的方法,時間復(fù)雜度低,邏輯簡單易懂,總的來說就是不斷的除以2除以2...
但是需要注意:
待查找的序列區(qū)間單調(diào)有序
例如需要查找有序數(shù)組arr里面的某個關(guān)鍵字key的位置,那么首先確認arr的中位數(shù)或者中點center,下面分為三種情況:
假如arr[center]>key,說明key在arr中心左邊范圍;
假如arr[center]<key,說明key在arr中心右邊范圍;
假如arr[center]=key,說明key在arr中心。
范圍每次縮小一半,寫個while的死循環(huán)知道找到為止。
二分法查找非??烨曳浅3S茫俏ㄒ灰笫且髷?shù)組是有序的
二分法的代碼如下:
#!/usr/bin/python3.4 # -*- coding: utf-8 -*- def BinarySearch(arr, key): # 記錄數(shù)組的最高位和最低位 min = 0 max = len(arr) - 1 if key in arr: # 建立一個死循環(huán),直到找到key while True: # 得到中位數(shù) # 這里一定要加int,防止列表是偶數(shù)的時候出現(xiàn)浮點數(shù)據(jù) center = int((min + max) / 2) # key在數(shù)組左邊 if arr[center] > key: max = center - 1 # key在數(shù)組右邊 elif arr[center] < key: min = center + 1 # key在數(shù)組中間 elif arr[center] == key: print(str(key) + "在數(shù)組里面的第" + str(center) + "個位置") return arr[center] else: print("沒有該數(shù)字!") if __name__ == "__main__": arr = [1, 6, 9, 15, 26, 38, 49, 57, 63, 77, 81, 93] while True: key = input("請輸入你要查找的數(shù)字:") if key == " ": print("謝謝使用!") break else: BinarySearch(arr, int(key))
運行結(jié)果:
以上是“python如何實現(xiàn)有序查找算法”這篇文章的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對大家有幫助,更多相關(guān)知識,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!
文章題目:python如何實現(xiàn)有序查找算法-創(chuàng)新互聯(lián)
本文路徑:http://aaarwkj.com/article20/ccosjo.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供云服務(wù)器、網(wǎng)站改版、企業(yè)建站、移動網(wǎng)站建設(shè)、外貿(mào)建站、電子商務(wù)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容