Python實現二分尋找(二分查詢)

來源:互聯網
上載者:User
二分查詢演算法

def BinarySearch(a, target):     low = 0    high = len(a) - 1    while low <= high:#在其它語言中,如果low + high的和大於Integer的最大值,比如2 ** 31 - 1,#計算便會發生溢出,使它成為一個負數,然後被2除時結果仍為負數。在Java語言中,#這個Bug導致一個ArrayIndexOutOfBoundsException異常被拋出,而在C語言中,#你會得到一個無法預測的越界的數組下標。推薦的解決方案是修改中間值的計算過程,#方法之一是用減法而不是加法——來實現:mid = low + ((high - low) / 2);或者,#如果你想炫耀一下自己掌握的移位元運算的知識,可以使用更快的移位元運算操作,#在Python中是mid = (low + high) >> 1,Java中是int mid = (low + high) >>> 1。        mid = (low + high) // 2        midVal = a[mid]         if midVal < target:            low = mid + 1        elif midVal > target:            high = mid - 1        else:            return mid    return -1
  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.