亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

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

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

Python二分查找算法的實現方法

發布時間:2020-07-21 14:07:39 來源:億速云 閱讀:256 作者:小豬 欄目:開發技術

這篇文章主要講解了Python二分查找算法的實現方法,內容清晰明了,對此有興趣的小伙伴可以學習一下,相信大家閱讀完之后會有幫助。

先來看個用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)om/weixin.html#_labeldown

運行:

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

實例補充

#!/usr/bin/python env
# -*- coding:utf-8 -*-

def half_search(array,target):
 low = 0
 high = len(array) - 1
 while low < high:
   mid = (low + high)/2
   if array[mid] > target:
   high = mid - 1
   elif array[mid] < target:
   low = mid + 1
   elif array[mid] == target:
   print 'I find it! It is in the position of:',mid
   return mid
   else:
   print "please contact the coder!"
 return -1

if __name__ == "__main__":
 array = [1, 2, 2, 4, 4, 5]

運行結果如下:

I find it! It is in the position of: 4
4
-1
I find it! It is in the position of: 0
0
-1

看完上述內容,是不是對Python二分查找算法的實現方法有進一步的了解,如果還想學習更多內容,歡迎關注億速云行業資訊頻道。

向AI問一下細節

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

AI

洪泽县| 普洱| 盐津县| 新平| 曲阳县| 平凉市| 大方县| 沾益县| 宁远县| 翁源县| 信宜市| 华亭县| 东山县| 平顶山市| 白山市| 通山县| 乳山市| 镇巴县| 黄山市| 呼玛县| 明水县| 启东市| 泗洪县| 即墨市| 襄城县| 宁海县| 宁波市| 乌鲁木齐县| 松潘县| 民权县| 沁水县| 遵义县| 长岭县| 邢台县| 威远县| 绥化市| 日喀则市| 虞城县| 裕民县| 高雄市| 太原市|