电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術文章
文章詳情頁

Python如何實現的二分查找算法

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

先來看個用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 -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,缺少像正統面向對象語言的私有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 = 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]

運行結果如下:

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

以上就是Python如何實現的二分查找算法的詳細內容,更多關于用Python實現的二分查找算法的資料請關注好吧啦網其它相關文章!

標簽: Python 編程
相關文章:
主站蜘蛛池模板: 塑料检查井_双扣聚氯乙烯增强管_双壁波纹管-河南中盈塑料制品有限公司 | 药品/药物稳定性试验考察箱-埃里森仪器设备(上海)有限公司 | 建筑消防设施检测系统检测箱-电梯**检测仪器箱-北京宇成伟业科技有限责任公司 | 即用型透析袋,透析袋夹子,药敏纸片,L型涂布棒-上海桥星贸易有限公司 | 液压油缸-液压站生产厂家-洛阳泰诺液压科技有限公司 | 矿用履带式平板车|探水钻机|气动架柱式钻机|架柱式液压回转钻机|履带式钻机-启睿探水钻机厂家 | 广州迈驰新GMP兽药包装机首页_药品包装机_中药散剂包装机 | 垃圾清运公司_环卫保洁公司_市政道路保洁公司-华富环境 | 超声波清洗机_大型超声波清洗机_工业超声波清洗设备-洁盟清洗设备 | 油缸定制-液压油缸厂家-无锡大鸿液压气动成套有限公司 | 高低温试验箱-模拟高低温试验箱订制-北京普桑达仪器科技有限公司【官网】 | 双齿辊破碎机-大型狼牙破碎机视频-对辊破碎机价格/型号图片-金联机械设备生产厂家 | 废气处理_废气处理设备_工业废气处理_江苏龙泰环保设备制造有限公司 | U拓留学雅思一站式服务中心_留学申请_雅思托福培训 | 中图网(原中国图书网):网上书店,尾货特色书店,30万种特价书低至2折! | 大型冰雕-景区冰雕展制作公司,3D创意设计源头厂家-[赛北冰雕] | PC阳光板-PC耐力板-阳光板雨棚-耐力板雨棚,厂家定制[优尼科板材] | 小区健身器材_户外健身器材_室外健身器材_公园健身路径-沧州浩然体育器材有限公司 | 自动配料系统_称重配料控制系统厂家 | 轴流风机-鼓风机-离心风机-散热风扇-罩极电机,生产厂家-首肯电子 | 丙烷/液氧/液氮气化器,丙烷/液氧/液氮汽化器-无锡舍勒能源科技有限公司 | 杭州门窗厂家_阳光房_包阳台安装电话-杭州窗猫铝合金门窗 | 合肥网络推广_合肥SEO网站优化-安徽沃龙First | 体感VRAR全息沉浸式3D投影多媒体展厅展会游戏互动-万展互动 | 企业管理培训,企业培训公开课,企业内训课程,企业培训师 - 名课堂企业管理培训网 | 智成电子深圳tdk一级代理-提供TDK电容电感贴片蜂鸣器磁芯lambda电源代理经销,TDK代理商有哪些TDK一级代理商排名查询。-深圳tdk一级代理 | 一氧化氮泄露报警器,二甲苯浓度超标报警器-郑州汇瑞埔电子技术有限公司 | 合肥礼品公司-合肥礼品定制-商务礼品定制公司-安徽柏榽商贸有限公司 | 智能型高压核相仪-自动开口闪点测试仪-QJ41A电雷管测试仪|上海妙定 | 火锅底料批发-串串香技术培训[川禾川调官网] | 沈阳网站建设_沈阳网站制作_沈阳网页设计-做网站就找示剑新零售 沈阳缠绕膜价格_沈阳拉伸膜厂家_沈阳缠绕膜厂家直销 | 舞台木地板厂家_体育运动木地板_室内篮球馆木地板_实木运动地板厂家_欧氏篮球地板推荐 | 预制围墙_工程预制围墙_天津市瑞通建筑材料有限公司 | 立式硫化罐-劳保用品硫化罐-厂家直销-山东鑫泰鑫硫化罐厂家 | PSI渗透压仪,TPS酸度计,美国CHAI PCR仪,渗透压仪厂家_价格,微生物快速检测仪-华泰和合(北京)商贸有限公司 | 单电机制砂机,BHS制砂机,制沙机设备,制砂机价格-正升制砂机厂家 单级/双级旋片式真空泵厂家,2xz旋片真空泵-浙江台州求精真空泵有限公司 | 安徽控制器-合肥船用空调控制器-合肥家电控制器-合肥迅驰电子厂 安徽净化板_合肥岩棉板厂家_玻镁板厂家_安徽科艺美洁净科技有限公司 | 精密五金加工厂-CNC数控车床加工_冲压件|蜗杆|螺杆加工「新锦泰」 | SF6环境监测系统-接地环流在线监测装置-瑟恩实业 | 通信天线厂家_室分八木天线_对数周期天线_天线加工厂_林创天线源头厂家 | 杭州成人高考_浙江省成人高考网上报名|