二分搜索算法python,python编写函数实现二分法查找

  二分搜索算法python,python编写函数实现二分法查找

  让我们看一个用Python实现的二分搜索法算法的例子。

  #!/usr/bin/envpython

  importsys

  defsearch2(a,m):

  低=0

  高=len(a)-1

  而(低=高):

  mid=(低高)/2

  midval=a[mid]

  ifmidvalm:

  低=中1

  elifmidvalm:

  高=中间1

  else:

  打印中间

  returnmid

  打印-1

  返回-1

  if__name__==__main__:

  a=[int(I)for iinlist(sys . argv[1])]

  m=int(sys.argv[2])

  2(上午,下午)运行:

  administrator @ Ubuntu : ~/PythonPython test _ search 2 . py 1234567894注:

  1.__ :因为python的类成员都是公共的,都是公开访问的public,所以缺少正统面向对象语言那样的私有属性。

  所以我凑合用_ _来模拟私有属性。这些_ _属性通常在内部使用,通常不需要重写。你不必读它。

  加两个下划线的目的是为了不与常用公共属性的重名冲突,也是为了防止对象的用户(非开发者)随意使用。

  2._ _ name _ _= _ _ main _ _ 表示直接执行程序脚本。

  如果这并不意味着该脚本是由其他程序用import导入的,则它的__name__属性被设置为模块名

  Python采用二分查找找出数字的下标

  考虑有重复数字的情况。

  classSolution(对象):

  defsearchRange(自身,数量,目标):

  :typenums:List[int]

  :类型目标:int

  :rtype:List[int]

  defbinary_search(开始,结束,值):

  铌

  sp;whileend>=start:

  mid=(start+end)//2

  print(mid)

  ifnums[mid]>target:

  end=mid-1

  elifnums[mid]<target:start="mid+1"else:=""if=""value="=-1:"mid-1="">=startandnums[mid+value]==target:

  end=mid+value

  else:

  returnmid

  else:

  ifmid+1<=endandnums[mid+value]==target:

  start=mid+value

  else:

  returnmid

  

  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:>二分算法的定义不在多说了

  

importsys

  source=[1,2,3,4,5,6,7,8,9,10]#mustbeinorder

  des=int(sys.argv[1])

  low=0

  high=len(source)-1

  targetIndex=-1

  print"des=",des

  whilelow<=high:

  middle=(low+high)/2

  ifdes==source[middle]:

  targetIndex=middle

  break

  elifdes<source[middle]:

  high=middle-1

  print"middleelement[index=",middle,",value=",source[middle],"]isbiggerthandes,continuesearchfrom[",low,"to",high,"]"

  else:

  low=middle+1

  print"middleelement[index=",middle,",value=",source[middle],"]issmallerthandes,continuesearchfrom[",low,"to",high,"]"

  print"searchcomplete,targetelement'sindexinsourcelistis",targetIndex

最后在分享一个

  'fileName--BinarySearch.py'

  

  

src=[]

  

  defBinarySearch(low,high,target,*src):

  '二分查找'

  whilelow<=high:

  mid=(low+high)//2

  midVal=src[mid]

  iftarget<midVal:

  high=mid-1

  eliftarget>midVal:

  low=mid+1

  else:

  returnmid

  BinarySearch(low,high,target,*src)

  

  print('Pleaseinput10number:')

  fornumberinrange(10):

  src.append(int(input('Num%d:'%number)))

  

  sortList=tuple(src)

  key=int(input('Pleaseinputkey:'))

  location=BinarySearch(0,len(src)-1,key,*sortList)

  

  iflocation!=None:

  print('Findtargetat%d'%(location+1))

  else:

  print('Notarget!')

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: