二分搜索算法

介紹

二分搜索是一種在有序數(shù)組中查找某一特定元素的搜索算法。這種搜索算法每一次比較都使搜索范圍縮小一半。

復(fù)雜度

最壞時間復(fù)雜度:O(log n)
最優(yōu)時間復(fù)雜度:O(1)
平均時間復(fù)雜度:O(log n)
最壞空間復(fù)雜度:迭代: O(1) 遞歸:O(log n)

步驟

  1. 搜索過程從數(shù)組的中間元素開始,如果中間元素正好是要查找的元素,則搜索過程結(jié)束;
  2. 如果某一特定元素大于或者小于中間元素,則在數(shù)組大于或小于中間元素的那一半中查找,而且跟開始一樣從中間元素開始比較。
  3. 如果在某一步驟數(shù)組為空,則代表找不到。

python

def binary_search(lst, value):
    lo, hi = 0, len(lst)-1
    while lo <= hi:
        mid = (lo + hi) / 2
        if lst[mid] < value:
            lo = mid + 1
        elif value < lst[mid]:
            hi = mid - 1
        else:
            return mid
    return -1
print(binary_search(lst, value))
#遞歸
def binary_search(arr,start,end,hkey):
    if start > end:
        return -1
    mid = start + (end - start) / 2
    if arr[mid] > hkey:
        return binary_search(arr, start, mid - 1, hkey)
    if arr[mid] < hkey:
        return binary_search(arr, mid + 1, end, hkey)
    return mid
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 原文地址:http://theory.stanford.edu/~amitp/GameProgramming/ 1...
    達微閱讀 20,172評論 0 28
  • 算法:二分搜索算法(折半查找算法)時間復(fù)雜度: 二分搜索算法概述 二分搜索算法偽代碼 二分搜索算法實現(xiàn) 二分搜索算...
    不存在的貓閱讀 2,258評論 0 0
  • 一些概念 數(shù)據(jù)結(jié)構(gòu)就是研究數(shù)據(jù)的邏輯結(jié)構(gòu)和物理結(jié)構(gòu)以及它們之間相互關(guān)系,并對這種結(jié)構(gòu)定義相應(yīng)的運算,而且確保經(jīng)過這...
    Winterfell_Z閱讀 6,612評論 0 13
  • 在吳文君老師《180天父母蛻變之旅》中,有一堂課是講潛意識的,吳老師在短短的二十分鐘里把潛意識講得很透徹,讓我們一...
    舜間永恒閱讀 1,145評論 0 0
  • 今天幼兒園開展了半日觀摩活動,請來了專家老師指導(dǎo)、點評,讓我受益匪淺。幼教這個行業(yè),真的需要不停地學(xué)習(xí),現(xiàn)在的教育...
    漠寒12345閱讀 325評論 0 0

友情鏈接更多精彩內(nèi)容