最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python如何實現(xiàn)的二分查找算法

 更新時間:2020年05月27日 11:26:46   作者:Python  
在本篇文章里小編給大家分享的是一篇關(guān)于Python實現(xiàn)的二分查找算法實例講解內(nèi)容,需要的朋友們可以學(xué)習(xí)下。

先來看個用Python實現(xiàn)的二分查找算法實例

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)om/weixin.html#_labeldown

運行:

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

注:

1.'__':由于python的類成員都是公有、公開的被存取public,缺少像正統(tǒng)面向?qū)ο笳Z言的私有private屬性。

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

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

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

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

Python采用二分查找找出數(shù)字的下標(biāo)

要考慮有重復(fù)數(shù)字的情況

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]

運行結(jié)果如下:

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如何實現(xiàn)的二分查找算法的詳細(xì)內(nèi)容,更多關(guān)于用Python實現(xiàn)的二分查找算法的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Python讀取和處理文件后綴為.sqlite的數(shù)據(jù)文件(實例講解)

    Python讀取和處理文件后綴為.sqlite的數(shù)據(jù)文件(實例講解)

    下面小編就為大家?guī)硪黄狿ython讀取和處理文件后綴為.sqlite的數(shù)據(jù)文件(實例講解)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-06-06
  • 對Python使用mfcc的兩種方式詳解

    對Python使用mfcc的兩種方式詳解

    今天小編就為大家分享一篇對Python使用mfcc的兩種方式詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-01-01
  • Python將視頻或者動態(tài)圖gif逐幀保存為圖片的方法

    Python將視頻或者動態(tài)圖gif逐幀保存為圖片的方法

    本文是基于opencv將視頻和動態(tài)圖gif保存為圖像幀的方法,本文通過實例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價值,需要的朋友參考下吧
    2019-09-09
  • Pandas 如何處理DataFrame中的inf值

    Pandas 如何處理DataFrame中的inf值

    這篇文章主要介紹了Pandas 如何處理DataFrame中的inf值,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-05-05
  • python中pyqtgraph知識點總結(jié)

    python中pyqtgraph知識點總結(jié)

    在本篇文章里小編給大家整理的是一篇關(guān)于python中pyqtgraph知識點總結(jié)內(nèi)容,有興趣的朋友們可以學(xué)習(xí)下。
    2021-01-01
  • Python3.5 Pandas模塊之Series用法實例分析

    Python3.5 Pandas模塊之Series用法實例分析

    這篇文章主要介紹了Python3.5 Pandas模塊之Series用法,結(jié)合實例形式分析了Python3.5中Pandas模塊的Series結(jié)構(gòu)原理、創(chuàng)建、獲取、運算等相關(guān)操作技巧與注意事項,需要的朋友可以參考下
    2019-04-04
  • 深入淺出學(xué)習(xí)python裝飾器

    深入淺出學(xué)習(xí)python裝飾器

    這篇文章主要和大家一起深入淺出的學(xué)習(xí)python裝飾器的相關(guān)資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-09-09
  • Python 字符串定義

    Python 字符串定義

    字符串是程序中最常見的數(shù)據(jù)類型。在Python中,可以使用三種方式定義字符串。單引號、雙引號和三引號。
    2009-09-09
  • 簡單探討一下python線程鎖

    簡單探討一下python線程鎖

    本文主要介紹了簡單探討一下python線程鎖,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-04-04
  • Python入門教程(十八)Python的For循環(huán)

    Python入門教程(十八)Python的For循環(huán)

    這篇文章主要介紹了Python入門教程(十八)Python的For循環(huán),Python是一門非常強大好用的語言,也有著易上手的特性,本文為入門教程,需要的朋友可以參考下
    2023-04-04

最新評論

永嘉县| 大名县| 凤庆县| 日喀则市| 白朗县| 桂东县| 扬州市| 平昌县| 甘肃省| 临沧市| 遂川县| 正宁县| 辽宁省| 永丰县| 梨树县| 大连市| 徐水县| 新巴尔虎左旗| 高邮市| 晋中市| 和平县| 电白县| 肇州县| 北辰区| 桐庐县| 罗定市| 临湘市| 太湖县| 肇源县| 阿合奇县| 武强县| 土默特左旗| 剑河县| 奉节县| 宁远县| 锡林郭勒盟| 葫芦岛市| 临漳县| 罗定市| 隆尧县| 桐梓县|