婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > Python查找算法之折半查找算法的實現(xiàn)

Python查找算法之折半查找算法的實現(xiàn)

熱門標(biāo)簽:看懂地圖標(biāo)注方法 淮安呼叫中心外呼系統(tǒng)如何 打印谷歌地圖標(biāo)注 佛山通用400電話申請 電話外呼系統(tǒng)招商代理 廣東旅游地圖標(biāo)注 電話機(jī)器人貸款詐騙 蘇州人工外呼系統(tǒng)軟件 京華圖書館地圖標(biāo)注

一、折半查找算法

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

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


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

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

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

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

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

從折半法查找的步驟來看,明顯比順序查找法的次數(shù)少,這就是折半查找法的優(yōu)點(diǎn):查找速度快。

二、實例:線路故障

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

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

def search(data, num):
    """
    定義查找函數(shù):該函數(shù)使用的是折半查找算法
    :param data: 原數(shù)列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]:  # 判斷數(shù)據(jù)是否小于中間值
            # 輸出位置在數(shù)列中的左半邊
            print(f"{num} 介于中間故障點(diǎn) {low + 1}[{data[low]}] 和故障點(diǎn)位置 {mid + 1}[{data[mid]}] 之間,找左半邊......")
            high = mid - 1  # 最高位變成了中間位置減1
        elif num > data[mid]:  # 判斷數(shù)據(jù)是否大于中間值
            # 輸出位置在數(shù)列中的右半邊
            print(f"{num} 介于中間故障點(diǎn) {mid + 1}[{data[mid]}] 和故障點(diǎn)位置 {high + 1}[{data[high]}] 之間,找右半邊......")
            low = mid + 1  # 最低位變成了中間位置加1
        else:  # 判斷數(shù)據(jù)是否等于中間值
            return mid  # 返回中間位置
    return -1  # 自定義函數(shù)到此結(jié)束


inp_num = 0  # 定義變量,用來輸入鍵值
num_list = [12, 45, 56, 66, 77, 80, 97, 101, 120]  # 定義數(shù)列
print("疑似故障點(diǎn)如下:")
for index, ele in enumerate(num_list):
    print(f" {index + 1}[{ele}]", end="")  # 輸出數(shù)列
print("")
flag = True  # 開關(guān),用來管控是否多次查找

while flag:  # 循環(huán)查找
    inp_num = int(input("請輸入故障點(diǎn):").strip())  # 輸入查找鍵值
    if inp_num == -1:  # 判斷鍵值是否是-1
        break  # 若為-1,跳出循環(huán) 即結(jié)束程序
    result = search(num_list, inp_num)  # 調(diào)用自定義的查找函數(shù)——search()函數(shù)
    if result == -1:  # 判斷查找結(jié)果是否是-1
        print(f"沒有找到[{inp_num}]故障點(diǎn)")  # 若為-1,提示沒有找到值
    else:
        # 若不為-1,提示查找位置
        print(f"在{result + 1}個位置找到[{num_list[result]}]故障點(diǎn)")
    char = input("本次查找結(jié)束,是否繼續(xù)查找,請輸入 y(Y) 或 n(N):").strip()
    if char.upper() == "N":
        flag = False

程序執(zhí)行結(jié)果如下圖所示:

到此這篇關(guān)于Python查找算法之折半查找算法的實現(xiàn)的文章就介紹到這了,更多相關(guān)Python 折半查找算法內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:
  • python實現(xiàn)線性回歸算法
  • Python實現(xiàn)七大查找算法的示例代碼
  • Python查找算法之插補(bǔ)查找算法的實現(xiàn)
  • python高效的素數(shù)判斷算法
  • python實現(xiàn)ROA算子邊緣檢測算法
  • Python實現(xiàn)粒子群算法的示例
  • Python實現(xiàn)隨機(jī)爬山算法
  • python中K-means算法基礎(chǔ)知識點(diǎn)
  • python 圖像增強(qiáng)算法實現(xiàn)詳解
  • python入門之算法學(xué)習(xí)

標(biāo)簽:駐馬店 呼和浩特 中山 湖州 畢節(jié) 股票 江蘇 衡水

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《Python查找算法之折半查找算法的實現(xiàn)》,本文關(guān)鍵詞  Python,查找,算法,之,折半,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《Python查找算法之折半查找算法的實現(xiàn)》相關(guān)的同類信息!
  • 本頁收集關(guān)于Python查找算法之折半查找算法的實現(xiàn)的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    日韩精品三区四区| 1000部国产精品成人观看| 精品sm在线观看| 青青草97国产精品免费观看 | 国产又黄又大久久| 欧美另类变人与禽xxxxx| 一区二区三区中文在线| 92精品国产成人观看免费| 国产精品不卡一区| 在线免费视频一区二区| 亚洲福利国产精品| 欧美电影影音先锋| 狠狠色丁香久久婷婷综| 日韩精品一区二| 国产乱淫av一区二区三区| 精品对白一区国产伦| 国产suv精品一区二区6| 国产精品久久福利| 欧美日免费三级在线| 韩国女主播一区| 欧美激情一区二区三区全黄| 东方欧美亚洲色图在线| 亚洲一区日韩精品中文字幕| 欧美高清性hdvideosex| 成人自拍视频在线观看| 日本一区二区三区久久久久久久久不 | 欧洲日韩一区二区三区| 亚洲欧美福利一区二区| 欧美高清视频在线高清观看mv色露露十八 | 色欧美乱欧美15图片| 丝袜诱惑制服诱惑色一区在线观看| 色噜噜久久综合| 另类中文字幕网| 亚洲女女做受ⅹxx高潮| 国产夜色精品一区二区av| 国产成人亚洲综合色影视| 亚洲综合视频在线| 欧美日韩美女一区二区| 国产电影精品久久禁18| 美女精品一区二区| 蜜桃免费网站一区二区三区| 日本欧美久久久久免费播放网| 亚洲一区二区三区四区不卡| 夜夜精品视频一区二区| 一二三区精品福利视频| 午夜精品福利视频网站| 日韩成人精品在线观看| 久久99精品国产91久久来源| 国产精品77777| 免费不卡在线观看| 国产精品一级片在线观看| 精品在线亚洲视频| 欧美aaaaa成人免费观看视频| 亚洲成人一区在线| 日韩av成人高清| 日韩精品免费专区| 麻豆成人久久精品二区三区红 | 欧美欧美欧美欧美首页| 不卡区在线中文字幕| 在线精品视频一区二区三四| 欧美在线观看一二区| 国产精品久久久久久久裸模 | 欧美国产97人人爽人人喊| 国产精品久线在线观看| 一二三四社区欧美黄| 成人午夜av电影| 欧美日本一道本| 久久亚洲捆绑美女| 亚洲123区在线观看| 国产成人在线视频网站| 在线观看视频一区二区| 国产精品美女久久久久久久| 久久精品99久久久| 91精品国产色综合久久| 一区二区三区在线播放| 91免费看`日韩一区二区| 国产片一区二区三区| 国产精品一级片在线观看| 日韩一区二区三区免费看| 亚洲国产精品一区二区尤物区| 99久久夜色精品国产网站| 久久夜色精品一区| 国产剧情在线观看一区二区| 久久天堂av综合合色蜜桃网| 国产伦精品一区二区三区免费 | 国产精品一级二级三级| 精品国产电影一区二区| 国内精品嫩模私拍在线| 日韩一区二区免费视频| 久久99精品一区二区三区| 欧美美女网站色| 欧美—级在线免费片| 国产精品白丝jk白祙喷水网站 | 欧美性一二三区| 亚洲影院在线观看| 91精品欧美福利在线观看| 久久精品99久久久| 国产亚洲欧美一级| 欧美午夜精品久久久久久孕妇| 亚洲乱码国产乱码精品精的特点 | 亚洲品质自拍视频| 欧美精品自拍偷拍| 丰满白嫩尤物一区二区| 一区二区三区视频在线观看| 久久网站最新地址| 欧美一级电影网站| 99re热这里只有精品免费视频| 喷白浆一区二区| 免费三级欧美电影| 香蕉成人伊视频在线观看| 国产精品久久久久7777按摩| 欧美日韩一区二区三区四区| 91精品国产免费| 91精品国产综合久久香蕉的特点| 成人精品一区二区三区四区| 精品视频一区二区三区免费| 国产精品免费人成网站| 美女视频黄免费的久久| 99re这里只有精品视频首页| 久久综合一区二区| 精品国产91亚洲一区二区三区婷婷| 欧美日韩一区二区三区四区 | 综合色天天鬼久久鬼色| 久久久综合视频| 亚洲国产精华液网站w| 国产色综合一区| 综合网在线视频| 亚洲综合色丁香婷婷六月图片| 亚洲久草在线视频| 亚洲成a人片综合在线| 免费观看久久久4p| 成人午夜电影小说| 欧美精品色一区二区三区| 欧美videofree性高清杂交| 成人欧美一区二区三区视频网页 | 成人不卡免费av| 日韩欧美在线观看一区二区三区| 亚洲一区二区三区美女| 国产成人自拍在线| 欧美日韩一级大片网址| 2023国产一二三区日本精品2022| 中文字幕一区二区在线观看| 99久久精品一区二区| 欧美午夜片在线看| 久久人人97超碰com| 偷拍自拍另类欧美| 99精品欧美一区二区三区小说| 成人精品视频一区二区三区| 日韩区在线观看| 婷婷国产在线综合| 99re热视频这里只精品| 亚洲国产岛国毛片在线| 久久精品国产在热久久| 日韩视频123| 日本亚洲天堂网| 欧美性受xxxx黑人xyx性爽| 亚洲欧美一区二区三区国产精品| 日韩国产高清在线| 欧美一级午夜免费电影| 亚洲欧洲国产日本综合| 国产91丝袜在线播放| 欧美激情综合在线| 成人v精品蜜桃久久一区| 91国在线观看| 欧美影视一区在线| 国产精品热久久久久夜色精品三区| 国产精品一区二区三区乱码| 亚洲一区二区成人在线观看| 中文字幕不卡的av| 国产精品久久久久影视| 国产欧美视频一区二区| 欧美日韩情趣电影| 在线91免费看| 欧美日韩国产一级| 国产成人精品亚洲777人妖 | 国产乱码精品一区二区三区忘忧草 | 国产综合一区二区| 国产精品免费视频网站| 久久久午夜电影| av色综合久久天堂av综合| 国产精品国产三级国产普通话蜜臀| 1区2区3区国产精品| 国产日韩高清在线| 精品国产91久久久久久久妲己| 99re视频这里只有精品| 成人福利视频网站| 偷拍亚洲欧洲综合| 日本成人在线视频网站| 欧美日韩国产一区| 日韩久久久久久| 91免费视频大全| 在线观看一区二区精品视频| av在线不卡电影| 成人看片黄a免费看在线| 日本成人在线视频网站| 亚洲美女免费在线| 日韩免费在线观看| 久久久久久久久久久99999| 欧美三级中文字幕| 极品瑜伽女神91|