python 二分尋找

來源:互聯網
上載者:User

標籤:pre   元素   折半尋找   sort   style   div   ret   else   gpo   

二分尋找要求對象必須有序,其基本原理如下:

  • .從數組的中間元素開始,如果中間元素正好是要尋找的元素,則搜素過程結束;
  • 2.如果某一特定元素大於或者小於中間元素,則在數組大於或小於中間元素的那一半中尋找,而且跟開始一樣從中間元素開始比較。
  • 3.如果在某一步驟數組為空白,則代表找不到。

二分尋找也成為折半尋找,演算法每一次比較都使搜尋範圍縮小一半, 其時間複雜度為 O(logn)。

未使用遞迴:

 1 a = [1,5,-9,2,8] 2  3 low = 0 4 high = len(a)-1 5 def mid_sort(array,value):      #value  要找的值 6  7     while(low < high): 8         mid = (low+high)/2 9         10         if array[mid] < value :11             low = mid+112         elif array[mid] > value:13             high = mid-114         else:15             return mid16 17     return None

 

使用遞迴:

 1 def binary_search(array,value,low,high): 2     if low>high: 3         return None 4     mid = (low + high)/2 5     if array[mid] > value: 6         return binary_search(array,value,low,mid-1) 7     elif array[mid] < value: 8         return binary_search(array,value,mid+1,high) 9     else:10         return mid

 

 

效能;

非遞迴比遞迴 效率高

 

python 二分尋找

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.