范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文

手把手教你用Python实现查找算法

  导读:在复杂的数据结构中高效地查找数据是其非常重要的功能之一。最简单的方法是在每个数据点中查找所需数据,效率并不高。因此随着数据规模的增加,我们需要设计更复杂的算法来查找数据。
  作者:伊姆兰·艾哈迈德(Imran Ahmad)
  来源:华章科技
  本文介绍以下查找算法:线性查找(Linear Search)二分查找(Binary Search)插值查找(Interpolation Search)
  我们详细了解一下它们各自的情况。01 线性查找
  查找数据的最简单策略就是线性查找,它简单地遍历每个元素以寻找目标,访问每个数据点从而查找匹配项,找到匹配项后,返回结果,算法退出循环,否则,算法将继续查找,直到到达数据末尾。线性查找的明显缺点是,由于固有的穷举搜索,它非常慢。它的优点是无须像其他算法那样,需要数据排好序。
  我们看一下线性查找的代码:def LinearSearch(list, item): index = 0 found = False  # Match the value with each data element  while index < len(list) and found is False: if list[index] == item: found = True else: index = index + 1 return found
  现在,看一下代码的输出(见图3-15)。list = [12, 33, 11, 99, 22, 55, 90] print(LinearSearch(list, 12)) print(LinearSearch(list, 91))
  图 3-15
  需要注意的是,如果能成功找到数据,运行LinearSearch函数会返回True。线性查找的性能:如上所述,线性查找是一种执行穷举搜索的简单算法,其最坏时间复杂度是O(N)。02 二分查找
  二分查找算法的前提条件是数据有序。算法反复地将当前列表分成两部分,跟踪最低和最高的两个索引,直到找到它要找的值为止:def BinarySearch(list, item): first = 0 last = len(list)-1 found = False  while first<=last and not found: midpoint = (first + last)//2 if list[midpoint] == item: found = True else: if item < list[midpoint]: last = midpoint-1 else: first = midpoint+1 return found
  输出结果如图3-16所示。list = [12, 33, 11, 99, 22, 55, 90] sorted_list = BubbleSort(list) print(BinarySearch(list, 12)) print(BinarySearch(list, 91))
  图 3-16
  请注意,如果在输入列表中找到了值,调用BinarySearch函数将返回True。二分查找的性能:二分查找之所以如此命名,是因为在每次迭代中,算法都会将数据分成两部分。如果数据有N项,则它最多需要O(log N)步来完成迭代,这意味着算法的运行时间为O(log N)。03 插值查找
  二分查找的基本逻辑是关注数据的中间部分。插值查找更加复杂,它使用目标值来估计元素在有序数组中的大概位置。
  让我们试着用一个例子来理解它:假设我们想在一本英文词典中搜索一个单词,比如单词river,我们将利用这些信息进行插值,并开始查找以字母r开头的单词,而不是翻到字典的中间开始查找。一个更通用的插值查找程序如下所示:def IntPolsearch(list,x ): idx0 = 0 idxn = (len(list) - 1) found = False while idx0 <= idxn and x >= list[idx0] and x <= list[idxn]:  # Find the mid point mid = idx0 +int(((float(idxn - idx0)/( list[idxn] - list[idx0])) * ( x - list[idx0])))  # Compare the value at mid point with search value  if list[mid] == x: found = True return found  if list[mid] < x: idx0 = mid + 1 return found
  输出结果如图3-17所示。list = [12, 33, 11, 99, 22, 55, 90] sorted_list = BubbleSort(list) print(IntPolsearch(list, 12)) print(IntPolsearch(list,91))
  图 3-17
  请注意,在使用IntPolsearch函数之前,首先需要使用排序算法对数组进行排序。插值查找的性能:如果数据分布不均匀,则插值查找算法的性能会很差,该算法的最坏时间复杂度是O(N)。如果数据分布得相当均匀,则最佳时间复杂度是O(log(log N))。
  关于作者:伊姆兰·艾哈迈德(Imran Ahmad) 是一名经过认证的谷歌讲师,多年来一直在谷歌和学习树(Learning Tree)任教,主要教授Python、机器学习、算法、大数据和深度学习。他在攻读博士学位期间基于线性规划方法提出了名为ATSRA的新算法,用于云计算环境中资源的优化分配。近4年来,他一直在加拿大联邦政府的高级分析实验室参与一个备受关注的机器学习项目。
  本文摘编自《程序员必会的40种算法》,经出版方授权发布。
  延伸阅读《程序员必会的40种算法》
  推荐语:本书致力于利用算法求解实际问题,帮助初学者理解算法背后的逻辑和数学知识。本书内容丰富,涉及算法基础、设计技术、分析方法、排序算法、查找算法、图算法、线性规划算法、机器学习算法、推荐算法、数据算法、密码算法和并行算法等内容,重点讲述如何使用Python进行算法实现和算法性能的比较与分析。

巨头流量花园封锁下,品牌如何打造私域流量池?巨头流量花园有他巨头强势的优势,小家品牌流量自有小家的灵活优势,名家大宛占有声势显赫为主宰,他不屑委身小微答理家常,他的流量源大都居于讲坛,而讲坛下面的后勤有着为数不少的各个行业,曝vivoX70Pro将首次升级50W无线充电今日,微博大V数码闲聊站爆料,vivo将有一款新机配备4500mAh电池55W有线快充和50W无线快充。结合vivo目前的产品更新进度推测,该机应该属于X70系列。此前,博主熊猫很消费降级6块9的宿舍神器,无极调光3色温触控酷毙灯晒单简评Tony哥的Buy家日常车站6块9的精装高配版宿舍酷毙灯到手,对比以往34块钱的廉价入门产品贵了近一倍,功能表现强了几何?闲话少说,老规矩看图说话包装盒还算正规,比之前3块5酷毙灯iPhone13下月就来,还有这些重磅新品今年的八月已经过去了一半,对于科技数码爱好者们来说,又到数着日子等iPhone发布会的时候了。在公认的科技春晚这一天,库克会现身ApplePark,与诸位高管一同揭晓苹果打磨的最新重拾社交那一刻,美团就停战了自2020年拼多多上线主打真实评价的产品拼小圈后,各大电商也纷纷上线了小圈类产品。拼多多以外,淘宝目前上线了淘友圈,京东上线了京友圈近日,美团也开始内测能够建立社交关系的外卖分享功喜讯五笑智能科技同屏器获颁HUAWEIHiLink生态产品技术认证喜讯8月13日,由东莞市五笑智能(联力胜科技)自主研制的同屏器NC81216XS经全球著名通讯设备商华为技术有限公司认证,产品符合HUAWEIHiLink技术规范和要求,获颁华为公李彦宏发布百度Apollo汽车机器人不设方向盘无需人类驾驶在2021百度世界大会上,百度CEO李彦宏正式发布了一款名叫Apollo的汽车机器人。根据李彦宏的介绍,这款汽车机器人内部没有设置方向盘踏板这种需要人为控制的操作设施。这款机器人主用过小米平板5后,我只想说在座各位都是渣渣8月10日晚上,被米粉称之为咕咕派的小米平板5,终于正式发布。而且从当晚机哥的文章留言来看,机友们对那场发布会最感兴趣的产品,也是它。其实说到安卓平板,小米算得上的比较早入局的那一iPhone13也可能会出现缺货,这次台积电拖后腿,污染惹的祸?华为P50系列发布以后,遗憾缺失5G功能,现在开售的华为P50Pro麒麟芯片版本依旧缺货需要抢购。迫于无奈,不少小伙伴把目光放在了9月份即将发布的iPhone13新机身上。但就在近方太让厨房凉了,技术矩阵香了2021年8月12日,方太年度发布会又爆了。很多业界人士几乎习惯了,在每年的年中等候方太这样一场发布会,期待这个高端厨电的引领者,在这一年的年度会上将带来怎样震惊业界的新物种。已经华为显示器S24正式开售低蓝光无频闪售899元起CNMO新闻对于需要使用电脑进行工作的人来说,一块好的电脑显示器可是非常重要,它的显示效果可能就关乎着大家是否能够舒适工作。8月18日,华为显示器S24正式开售,售899元起,是一
华为HarmonyOS2最新升级进度公布8月20日,HarmonyOS官方微博公布了华为HarmonyOS2最新升级进度。据了解,即日起,荣耀30S荣耀30青春版荣耀X10荣耀X10Max荣耀Play4五款荣耀机型开启公运动听歌舒适安全之选SanagA7S骨传导耳机体验前言作为蓝牙耳机市场杀出的一匹黑马,黑科技加持的骨传导耳机受到广大都市人尤其运动爱好者的喜爱。利用骨传导技术,通过头骨颌骨把声音传到听觉神经引起听觉,同时又不阻碍外接声音的通过,保无人机航拍装备,头条号创作收益2021。8。19拍摄于玉东湖畔一寻找和创作素材1。发现美的眼睛无人机航拍是一个载体,更重要的是有一双发现美的眼睛,对自然,对建筑,对人文历史和景观2。主题创作挑选一个主题,通过周英特尔公布AlderLake架构,终于摆脱14nm,12代酷睿性能未来可期请点击关注,获取更多数码资讯8月19日,英特尔在其举办的架构日活动中,公布全新的架构AlderLake,并且透露出些许关于12代酷睿处理器的一些信息。全新一代的处理器将全面使用大小iPhone的siri有趣的冷知识随着iOS系统的更新,iPhone自带的语音助理Siri也变得越来越聪明。现在,Siri可以随时随地给你讲冷笑话了,帮你调节一下心情。方法很简单,只需要对Siri说,嘿Siri,给发布仅四个月就上架官方翻新?iMacM1优惠出售中苹果在今年四月份刚刚推出iMacM1版本之后,很快啊!就在今天又上架了其官方翻新版本。从这个速度来看,iMacM1简直是Mac中翻新版本上架最快的,仅仅发布四个月就推出了官方翻新版华为官方商城上架官翻机华为线上商城近日上架官方认证二手机专区。页面显示,目前在售的二手机型号有华为P30P30Pro,以及Mate30Mate30Pro的4G和5G版,共6个型号。这些机器均显示为二手9美商海盗船发布HS80RGBWIRELESS高品质无线游戏耳机美商海盗船宣布,推出旗下全新的高品质无线游戏耳机HS80RGBWIRELESS。新产品搭载了美商海盗船的SLIPSTREAM低延迟无线传输技术,在外观上也采用了全新的设计,同时拥有助听器耳模主要作用是固定助听器防止声反馈和佩戴舒适等,那什么时候需要更换耳模?你好助听器耳模主要作用是固定助听器防止声反馈和佩戴舒适等,那什么时候需要更换耳模?如果耳模老化发黄或者耳模部分有破损断裂的,可能会导致啸叫或者佩戴舒适度差,这个时候就可以重新制作耳美团骑手超时1小时才送达,而且拒绝道歉。我不该说他吗?你有投诉要求道歉和拒收的权利,但骑手没有义务配合你。因为骑手按平台规则办事,拿平台给的劳务费,跟客户没有直接关系。有事请找平台,别有事没事找骑手。你有什么权利说他?如果超时你可以系OPPOEncoAir今年最受学生党欢迎?深度评测找原因说最受学生党欢迎违反广告法,是不是最受欢迎我也不知道,但是说很受学生党欢迎一点问题没有,在说这个问题之前首先要说的是TWS耳机目前特别受消费者欢迎。根据知名市调机构Counterp