国产成人AV无码一二三区,少女1到100集,国产精品久久久久精品综合紧,巜公妇之诱感肉欲HD在线播放

文章 > Python基础教程 > 用Python实现的二分查找算法

用Python实现的二分查找算法

头像

Python

2019-06-13 09:47:533624浏览 · 0收藏 · 0评论

先来看个用Python实现的二分查找算法实例

#!/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

注:

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

关注公众号,随时随地在线学习

本教程部分素材来源于网络,版权问题联系站长!

国产在线观看免费全集电视剧网站 | 《饥饿妻子》完整版在线观看| 欧美三级A做爰在线观看| 苍井空| 妈妈与儿子高清免费版电视剧| 公粗一夜6次挺进我的密道| 男生把困困放在女生定眼| 小静被门卫大爷灌满川NG液视..| 《酒店激战》动漫1-5集免费观..| 美女被捆绑绳子穿过下体 勒胸| 春闺艳妇(古言)作者:年富一年| 灯草和尚 小说| 电动吸奶器| 美国色情巜教练和女警官视频| 《公与媳夫妇:交换》| 《吃你吃上瘾》| 妈妈俱乐部1-34节小说| 俄罗斯大扔子视频观看| 三个老师轮流给学生布置作业| 乱公伦媳..HH| 电影《满足2》完整版在线观看| 白带内裤拉丝尿液| 国产 欧美一区二区三区| 《黏糊糊的你》动浸免费观看 | 三人互换麦子| 暴躁老女人免费观看电视剧| 做完0之后屁股里流了一点血| 《请好好疼爱里面》免费观看| 芒果浏览器| 华为新品手机发布| 爸爸VICIUSSS幼儿小女孩| 《淫毛》在线观看免费| 人妻无码| 请满雪阳花电视剧全集免费观看| 少女配狗播放视频| 瑜伽裤透明全毛露丁字裤| 亲嘴扔衣服的视频| 每天晚上都在汆肉中度| 狗配女人宝典视频| 啊灬啊灬啊灬快…深的含义 | 擦边