91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

怎么用Python實現的二分查找算法

發布時間:2020-08-24 16:50:19 來源:億速云 閱讀:131 作者:Leah 欄目:編程語言

本篇文章給大家分享的是有關怎么用Python實現的二分查找算法,小編覺得挺實用的,因此分享給大家學習,希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。

先來看個用Python實現的二分查找算法實例

#!/usr/bin/env python 
import sys  
  
def search3(a,m): 
  low = 0 
  high = len(a) - 1 
  while(low <= high): 
    mid = (low + high)/2
    midval = a[mid] 
    
    if midval < m: 
      low = mid + 1 
    elif midval > m: 
      high = mid - 1 
    else: 
      print mid  
      return mid  
  print -1
  return -1
  
if __name__ == "__main__": 
  a = [int(i) for i in list(sys.argv[1])] 
  m = int(sys.argv[2]) 
  search3(a,m)

運行:

administrator@ubuntu:~/Python$ python test_search3.py 123456789 4

注:

1.'__':由于python的類成員都是公有、公開的被存取public,缺少像正統面向對象語言的私有private屬性。

于是就用__來將就一下,模擬私有屬性。這些__屬性往往是內部使用,通常情況下不用改寫。也不用讀取。

加上2個下劃線的目的,一是不和普通公有屬性重名沖突,二是不讓對象的使用者(非開發者)隨意使用。

2.__name__ == "__main__"表示程序腳本是直接被執行的.

如果不等于表示腳本是被其他程序用import引入的.則其__name__屬性被設為模塊名

Python采用二分查找找出數字的下標

要考慮有重復數字的情況

class Solution(object):
  def searchRange(self, nums, target):
    """
    :type nums: List[int]
    :type target: int
    :rtype: List[int]
    """
    def binary_search(start,end,value):
      while end>=start:
        mid = (start+end)//2
        print(mid)
        if nums[mid]>target:
          end = mid-1
        elif nums[mid]<target: start="mid+1" else:="" if="" value="=-1:" mid-1="">=start and nums[mid+value] == target:
              end = mid+value
            else:
              return mid
          else:
            if mid+1<=end and nums[mid+value] == target:
              start = mid+value
            else:
              return mid
  
      return -1
    a=binary_search(0,len(nums)-1,-1)
    b=binary_search(0,len(nums)-1,1)
    return [a,b]
a = Solution()
l = [2,2]
print(a.searchRange(l,2))
 
</target:>

二分算法的定義不在多說了

import sys 
source = [1,2,3,4,5,6,7,8,9,10] #must be in order 
des = int(sys.argv[1]) 
low = 0
high = len(source) - 1
targetIndex = -1
print "des=",des 
while low <= high: 
  middle = (low + high)/2
  if des == source[middle]: 
    targetIndex = middle 
    break
  elif des < source[middle]: 
    high = middle -1
    print "middle element[index=",middle,",value=",source[middle],"] is bigger than des, continue search from[",low,"to",high,"]"
  else: 
    low = middle + 1
    print "middle element[index=",middle,",value=",source[middle],"] is smaller than des, continue search from[",low,"to",high,"]"
print "search complete, target element's index in source list is ",targetIndex

最后在分享一個

'fileName--BinarySearch.py'

src = [] 
  
def BinarySearch(low, high, target, *src): 
  '二分查找'
  while low <= high: 
    mid = (low + high) // 2
    midVal = src[mid] 
    if target < midVal: 
      high = mid - 1
    elif target > midVal: 
      low = mid + 1
    else: 
      return mid 
    BinarySearch(low, high, target, *src) 
  
print('Please input 10 number:') 
for number in range(10): 
  src.append(int(input('Num %d:' % number))) 
  
sortList = tuple(src) 
key = int(input('Please input key:')) 
location = BinarySearch(0, len(src) - 1, key, *sortList) 
  
if location != None: 
  print('Find target at %d' % (location + 1)) 
else: 
  print('No target!')

以上就是怎么用Python實現的二分查找算法,小編相信有部分知識點可能是我們日常工作會見到或用到的。希望你能通過這篇文章學到更多知識。更多詳情敬請關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

潼南县| 启东市| 汉阴县| 寿光市| 泉州市| 肥西县| 阿图什市| 巫溪县| 政和县| 苍南县| 浦北县| 邯郸县| 平昌县| 门源| 铁岭市| 成武县| 惠水县| 邵武市| 北海市| 甘肃省| 河北省| 盘锦市| 竹北市| 大丰市| 绩溪县| 斗六市| 天柱县| 江永县| 玉山县| 正蓝旗| 霍州市| 韩城市| 远安县| 新沂市| 洛川县| 滕州市| 襄汾县| 册亨县| 天镇县| 梅州市| 贵南县|