午夜剧场伦理_日本一道高清_国产又黄又硬_91黄色网战_女同久久另类69精品国产_妹妹的朋友在线

您的位置:首頁技術(shù)文章
文章詳情頁

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

瀏覽:122日期:2022-07-24 13:17:15

先來看個用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 -1if __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ù)字的下標

要考慮有重復數(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 = 0high = len(source) - 1targetIndex = -1print '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 -1if __name__ == '__main__': array = [1, 2, 2, 4, 4, 5]

運行結(jié)果如下:

I find it! It is in the position of: 44-1I find it! It is in the position of: 00-1

以上就是Python如何實現(xiàn)的二分查找算法的詳細內(nèi)容,更多關(guān)于用Python實現(xiàn)的二分查找算法的資料請關(guān)注好吧啦網(wǎng)其它相關(guān)文章!

標簽: Python 編程
相關(guān)文章:
主站蜘蛛池模板: 欧美一级片在线免费观看 | 全部免费毛片在线播放高潮 | 日韩精品视频在线看 | 99热18| 免费在线国产视频 | 男操女免费视频 | 超碰精品在线观看 | 成人一区视频 | 免费在线观看黄色片 | 五十路中文字幕 | 中文av在线播放 | 亚洲精品18在线观看 | 国产精品9999 | 99视频精品在线 | 久久久久久久97 | 精品一级视频 | 国产一区二区免费 | 久久久亚洲成人 | 小视频在线免费观看 | 精品在线观看视频 | 在线免费小视频 | 国产综合自拍 | 在线成人播放 | 亚洲色诱 | 久久精品这里只有精品 | 人人超碰人人 | 伊人精品在线观看 | 国产精品久久九九 | 黄色录像特级片 | 欧美成人手机在线 | 免费看日韩av | 亚洲美女一区二区三区 | 亚日韩在线 | 男人的天堂欧美 | 国产日本视频 | 久久精品99国产精品日本 | 国产精品二区在线 | 国产精品欧美激情在线 | 欧美三级中文字幕 | 日韩精品久久久久久久的张开腿让 | 西西午夜视频 |