测试开发人员需了解的基础算法系列(一)

本文介绍了测试人员了解基础算法的重要性,特别是二分查找和快速排序。二分查找能有效缩小搜索范围,如在电话本或登录验证中。通过实例解释了二分查找的工作原理,并提供了Python实现。快速排序则是通过选取基准值,将数组分为两部分进行递归排序。推荐《算法图解》作为入门书籍。
摘要由CSDN通过智能技术生成

###背景介绍
算法 这个近两年由于大数据人工智能的兴起而被提及最多的关键词之一,从而在IT这个猿类圈中有了基因变异-算法工程师,被其他老猿类羡慕嫉妒恨,其实我觉得也没必要去羡慕,做好我们自己在本职的岗位做到优秀也不会比别人差的,有的测试猿说测试不需要了解或者研究算法,根本没毛线用,原来我也是这么认为,不过随着时间的推移猿类世界的基因突变,越来越发现不了解不懂算法会越来越没有竞争力,不为别的为了升职加薪你也得学啊,当然在测试过程中也更有助于我们了解需求,比如我们的项目就用到了一致性哈希算法,以及广度优先图的概念,二分查找等所以是有很大必要的。测试猿们,我们可以不需要每个算法都精通熟悉,但是基础的我们还是要必须知道地,以下就对这些常见的基础的一些算法做一些个人的总结与理解,有不对的地方还请各位大神指正!
###二分查找
假设在电话本虽然我们都不用电话本了中查找以我博客名allen的首字母A开头的人很容易第一次就能查到所有以A开头的人,那么假如是K呢你可能想到直接从中间找啊,还有假如要登陆CSDN,csdn必须要检查你是否拥有其网站的账户,假如你的名字也是K开头网站要从A开始查找,其实更科学的方式是从中间开始,所以基于以上情况都可以使用同一算法解决此问题,这种算法就是***二分查找***
###举个栗子
假如要从1-100中随便猜一个数字,你每次猜后我都会说大或者小了,假设你从1开始猜,过程大概就是假如你要猜的是100那么很不幸你要猜99次,当然单反有点脑子的肯定都是随机猜,当然还有更佳的方式,那就是从50开始。过程如下。

1,2,3,4,5,6,7,8,9。。。。。。。。。100

  • 50 小了 但是排除了一半的数字
  • 75 大了 余下的数字又减少了一半
  • 。。。。。
  • 每次都从剩下的数字排除了一半

每次猜排除数字的个数如下
100个元素–>50–>25–>13–7--4–2--1(对了)
所以不论猜的是什么,在7次之内都能猜到,每次都能排除一半的假答案
所以
对于二分查找,对于包含n个元素的列表用二分查找最多可以需要log^n步(对坐Log 以2为低n 的对数)
下面让我们来实现二分查找,下面是一个猜数字的游戏,每一次我们都从中间猜起,以一个List为例子,如果猜中就返回其位置,设定两个边界值

  • low = 0
  • high = len(list)-1
    每次都从中间猜起是:mid = (low+high) / 2 如果mid不是整数,python会自动向下取整guess = list[mid]
    完整代码如下
#list为传入的猜的列表,onj_num 为目标数
def guess_num(list,obj_num)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值