m:high=mid-1else:printmidreturnmidprint-1return-1if__name__=="__main__":a=[int(i)for" />

欧美三区_成人在线免费观看视频_欧美极品少妇xxxxⅹ免费视频_a级毛片免费播放_鲁一鲁中文字幕久久_亚洲一级特黄

Python二分查找詳解

系統 1755 0

先來看個實例

            
#!/usr/bin/env python 
import sys  
 
def search2(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]) 
  search2(a,m) 

          

運行:

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

          

3

注:

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]
            
              =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))


            
          

二分算法的定義不在多說了,百度一下就知道(支持國產大笑)

            
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!') 
          


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 无码免费人妻A片AAA毛片一区 | 免费看黄网 | 91免费影片 | av一级久久| 免费看一区二区三区 | 精品久久久久国产免费 | 男女在线无遮挡毛片免费 | 午夜小网站 | 日本精品久久久一区二区三区 | 我爱我色成人网 | 欧美亚洲精品在线 | 国内色综合精品视频在线 | 美女扒开胸罩给男生看视频 | 亚洲国产精品第一区二区三区 | 欧美一级夜夜爽 | 伊人伊人| 成人自拍在线 | 国产成人综合网在线观看 | 婷婷六月综合网 | 成人在线日韩 | 综合色在线 | 一区二区三区日韩视频在线观看 | 最新日本中文字幕在线观看 | 五月婷婷丁香在线观看 | 亚洲第一视频区 | 激情做a全过程片A | 在线视频中文字幕乱人伦 | 日韩一区不卡 | 国产精品尤物在线观看一区 | 欧美日韩在线免费观看 | 久久久国产精品 | 欧美黄一片| 中文字幕在线免费看 | 欧洲色综合 | 亚洲国产aⅴ成人精品无吗 国内成人自拍视频 | 亚州精品天堂中文字幕 | 草久影视| 亚洲欧美v国产一区二区 | 亚洲综合色婷婷久久 | 精品在线视频一区 | 欧美在线一区二区三区 |