日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

Python查找算法之折半查找算法的實現

瀏覽:22日期:2022-06-23 08:52:48
一、折半查找算法

折半查找算法又稱為二分查找算法,折半查找算法是將數據分割成兩等份,首先用鍵值(要查找的數據)與中間值進行比較。如果鍵值小于中間值,可確定要查找的鍵值在前半段;如果鍵值大于中間值,可確定要查找的鍵值在后半段。然后對前半段(后半段)進行分割,將其分成兩等份,再對比鍵值。如此循環比較、分割,直到找到數據或者確定數據不存在為止。折半查找的缺點是只適用于已經初步排序好的數列;優點是查找速度快。

生活中也有類似于折半查找的例子,例如,猜數字游戲。在游戲開始之前,首先會給出一定的數字范圍(例如0~100),并在這個范圍內選擇一個數字作為需要被猜的數字。然后讓用戶去猜,并根據用戶猜的數字給出提示(如猜大了或猜小了)。用戶通常的做法就是先在大范圍內隨意說一個數字,然后提示猜大了/猜小了,這樣就縮小了猜數字的范圍,慢慢地就猜到了正確的數字,如下圖所示。這種做法與折半查找法類似,都是通過不斷縮小數字范圍來確定數字,如果每次猜的范圍值都是區間的中間值,就是折半查找算法了。

Python查找算法之折半查找算法的實現

例如,已經有 排序好 的數列:12、45、56、66、77、80、97、101、120,要查找的數據是 101,用折半查找步驟如下:

步驟1:將數據列出來并找到中間值 77,將 101 與 77 進行比較,如下圖所示。

Python查找算法之折半查找算法的實現

步驟2:將 101 與 77 進行比較,結果是 101 大于 77,說明要查找的數據在數列的右半段。此時不考慮左半段的數據,對在右半段的數據再進行分割,找中間值。這次中間值的位置在 97 和 101 之間,取 97,將 101 與 97 進行比較,如下圖所示。

Python查找算法之折半查找算法的實現

步驟3:將 101 與 97 進行比較,結果是 101 大于 97,說明要查找的數據在右半段數列中,此時不考慮左半段的數據,再對剩下的數列分割,找中間值,這次中間值位置是 101,將 101 與 101 進行比較,如下圖所示。

Python查找算法之折半查找算法的實現

步驟4:將 101 與 101 進行比較,所得結果相等,查找完成。說明:如果多次分割之后沒有找到相等的值,表示這個鍵值沒有在這個數列中。

從折半法查找的步驟來看,明顯比順序查找法的次數少,這就是折半查找法的優點:查找速度快。

二、實例:線路故障

有一條的150米線路,在這條線路上存在故障。第一天維修工已經大致鎖定了幾個疑似故障點,疑似故障點分別在線路的12、45、56、66、77、80、97、101、120米處。第二天維修工要在這9個疑似故障點中確定一個真正的故障點(假設真正的故障點是101米處)。維修工為了快速查找此故障點,就在每段數據的中間位置開始排查。

例如,第一次選擇在77米處的疑似故障點接通電路,發現接通,他判斷此故障在77米之后的位置;第二次取97米處的疑似故障點,發現也接通了,說明在97米之后的位置;第三次取101米處的位置,再次接通線路,發現未接通,說明此處是真正的故障點。此次查找經歷了3次,將真正故障點找到。具體代碼如下:

def search(data, num): ''' 定義查找函數:該函數使用的是折半查找算法 :param data: 原數列data :param num: 鍵值num :return: ''' low = 0 # 定義變量用來表示低位 high = len(data) - 1 # 定義變量用來表示高位 print('正在查找.......') # 提示 while low <= high and num != -1:mid = int((low + high) / 2) # 取中間位置if num < data[mid]: # 判斷數據是否小于中間值 # 輸出位置在數列中的左半邊 print(f'{num} 介于中間故障點 {low + 1}[{data[low]}] 和故障點位置 {mid + 1}[{data[mid]}] 之間,找左半邊......') high = mid - 1 # 最高位變成了中間位置減1elif num > data[mid]: # 判斷數據是否大于中間值 # 輸出位置在數列中的右半邊 print(f'{num} 介于中間故障點 {mid + 1}[{data[mid]}] 和故障點位置 {high + 1}[{data[high]}] 之間,找右半邊......') low = mid + 1 # 最低位變成了中間位置加1else: # 判斷數據是否等于中間值 return mid # 返回中間位置 return -1 # 自定義函數到此結束inp_num = 0 # 定義變量,用來輸入鍵值num_list = [12, 45, 56, 66, 77, 80, 97, 101, 120] # 定義數列print('疑似故障點如下:')for index, ele in enumerate(num_list): print(f' {index + 1}[{ele}]', end='') # 輸出數列print('')flag = True # 開關,用來管控是否多次查找while flag: # 循環查找 inp_num = int(input('請輸入故障點:').strip()) # 輸入查找鍵值 if inp_num == -1: # 判斷鍵值是否是-1break # 若為-1,跳出循環 即結束程序 result = search(num_list, inp_num) # 調用自定義的查找函數——search()函數 if result == -1: # 判斷查找結果是否是-1print(f'沒有找到[{inp_num}]故障點') # 若為-1,提示沒有找到值 else:# 若不為-1,提示查找位置print(f'在{result + 1}個位置找到[{num_list[result]}]故障點') char = input('本次查找結束,是否繼續查找,請輸入 y(Y) 或 n(N):').strip() if char.upper() == 'N':flag = False

程序執行結果如下圖所示:

Python查找算法之折半查找算法的實現

到此這篇關于Python查找算法之折半查找算法的實現的文章就介紹到這了,更多相關Python 折半查找算法內容請搜索好吧啦網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持好吧啦網!

標簽: Python 編程
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
黑人精品一区| 国产精品密蕾丝视频下载| 国产精品极品在线观看| 99国产一区| 日韩不卡一区| 免费不卡中文字幕在线| 欧美一级一区| 午夜在线观看免费一区| 精品成人免费一区二区在线播放| 亚洲美女91| 红桃视频亚洲| 国产韩日影视精品| 久久久夜精品| 久久青青视频| 成人国产精选| 久久中文字幕av| 亚洲精品在线二区| 日本少妇精品亚洲第一区| 日本免费在线视频不卡一不卡二| 日本a级不卡| 久久精品一区二区国产| 日韩成人免费| 国产精品久久久久毛片大屁完整版| 日韩av在线免费观看不卡| 日韩精品三级| 日韩久久99| 国产精品视频3p| 久久精品午夜| 红桃视频国产一区| 老司机精品久久| 国产欧美精品| 五月天av在线| 好吊一区二区三区| 欧美交a欧美精品喷水| 欧美日韩国产免费观看| 欧美久久亚洲| 亚洲专区在线| 精品欧美日韩精品| 日韩成人高清| 久久亚洲资源中文字| 一区二区视频欧美| 国产精品夜夜夜| 美女网站视频一区| 日韩av不卡在线观看| 欧美成人国产| 国产欧美日韩精品一区二区三区| 午夜久久黄色| 久久精品导航| 久久久国产精品一区二区中文| 91免费精品国偷自产在线在线| 亚洲综合日本| 久久久久久黄| 福利一区二区免费视频| 中文字幕一区二区三区在线视频| 欧美亚洲一级| 亚洲三级网址| 日韩三级久久| 9国产精品视频| 红桃视频欧美| www.com.cn成人| 亚洲性色av| 亚洲成人一区在线观看| 国产精品乱战久久久| 亚洲免费一区三区| 久久高清一区| 亚洲精品麻豆| 亚洲视频二区| 好看的av在线不卡观看| 成人日韩在线| 欧美少妇精品| 激情婷婷亚洲| 美女被久久久| 欧美女激情福利| 快she精品国产999| 久久亚洲风情| 日韩区欧美区| 成人黄色av| 国产成人精选| 日本大胆欧美人术艺术动态| 麻豆久久精品| 国产精品任我爽爆在线播放| 国产免费久久| 免费在线观看一区| 国产精品日韩精品中文字幕| 亚洲啊v在线免费视频| 国产精品欧美大片| 日韩精品2区| 亚洲日韩视频| 亚洲天堂av影院| 免费久久99精品国产| 国产精品主播在线观看| 日本在线高清| 免费在线欧美视频| 国产乱码精品一区二区三区亚洲人| 91亚洲精品视频在线观看| 国产a久久精品一区二区三区| 国产视频久久| 91亚洲精品在看在线观看高清| 久久久一本精品| 日本视频一区二区| 激情黄产视频在线免费观看| 一二三区精品| 精品亚洲精品| 丝袜美腿高跟呻吟高潮一区| 奇米亚洲欧美| 蜜桃tv一区二区三区| 国产精品99久久免费| 一区二区小说| 久久精品国产亚洲aⅴ| 国产精品日韩欧美一区| 成人美女视频| 国产乱人伦丫前精品视频| 亚洲精品极品少妇16p| 日韩av在线免费观看不卡| 国产精品亚洲人成在99www| 成人精品高清在线视频| 日韩av二区在线播放| 欧美日韩激情在线一区二区三区| 国产精品xx| 久久香蕉精品香蕉| 国产精品毛片在线| 久久伦理在线| 日韩精品免费一区二区三区| 久久久久久自在自线| 国产一区二区三区不卡视频网站| 国产情侣一区| 欧美黄页在线免费观看| 婷婷久久免费视频| 色婷婷成人网| 欧美日韩少妇| 亚洲少妇自拍| 婷婷精品在线| 国产精品www.| 久久精品影视| 午夜av一区| 一区二区三区午夜视频| 老色鬼久久亚洲一区二区| 激情综合网五月| 蜜臀久久99精品久久一区二区| 国产精品久久| 日韩午夜免费| 欧美午夜精彩| 欧洲一级精品| 麻豆一区在线| 中文字幕av一区二区三区人| 久久伦理在线| 欧美日韩在线网站| 成人在线视频区| 欧美成a人片免费观看久久五月天| 蜜桃av一区二区三区电影| 模特精品在线| 老牛影视一区二区三区| 欧美在线亚洲| 欧美亚洲tv| 欧美亚洲综合视频| 国产中文字幕一区二区三区| 久久免费福利| 久久久久久一区二区| 精品深夜福利视频| 国产黄大片在线观看| 精品久久久网| 日韩精品dvd| 久久国产人妖系列| 久久久免费人体| 中文字幕色婷婷在线视频| 国产高清久久| 亚洲激情av| 日本va欧美va欧美va精品| 久久不见久久见中文字幕免费 | 久久99蜜桃| 国产成人精品亚洲日本在线观看| 伊人久久亚洲| 蜜桃视频在线观看一区| 在线精品亚洲| 国产精品传媒麻豆hd| 啪啪国产精品| 黄色欧美在线| 午夜久久影院| 欧美三级第一页| 日本免费一区二区三区四区| 日韩一区精品字幕| 人人草在线视频| 欧美日本一区| 婷婷中文字幕一区| 久久国产免费看| 亚洲欧美日韩视频二区| 国产精品视频一区视频二区| 久久99国产精品视频| 亚洲福利精品| 欧美日韩一区二区三区四区在线观看| 欧美日韩国产v| 国产精品久久久亚洲一区| 免费在线欧美视频| 激情综合自拍| 亚洲www啪成人一区二区| 综合欧美精品| 国产精品久久久久av电视剧| 国产精品久久久久久久久久齐齐| 婷婷亚洲五月| 巨乳诱惑日韩免费av|