part1
有个小姐姐在上班,某一天被 XX 相亲网的男士打电话“骚扰”。
起初以为是打错了,并没在意,后面才知道这个电话只是个开始。
隔三岔五的总会有一些男士打电话过来“约”她,小姐姐有点烦了,逮住其中的一个男士问,你从哪里找到我的信息的?
那个憨厚的男士一五一 十的告诉了他,男士在 XX 相亲网站看到小姐姐的信息,于是就打电话过来了。小姐姐半信半疑,就去那个相亲网站找。
天呐,上面照片和联系方式不正是自己的吗?
小姐姐还是第一次听说有这个网站的,而且上面的照片是她曾经花了一个下午用美图秀秀 P 的照片,也没在公开网站发布过。
该向这个网站的管理员投诉,让其注销此账号?
不行,小姐姐有点气不过,得揪出这个凶手才行,mmp。
之前谈恋爱练成的福尔摩斯思维,让她异常的冷静,她开始回想,从宇宙大爆炸到人类诞生,照片的来源,微博没发 / 抖音没玩 / QQ 空间早不玩了,也没私发过,那么剩下朋友圈了!!!
于是她锁定了微信账号上的几百个好友,可是这么多好友如同大海捞针,也不能打草惊蛇。不如来个将计就计,先假装什么都没发生,除了自己谁都不提这事。
她按照往常一样在朋友圈发自己美美哒的照片,但在发布之前她设置了分组可视,比如 300 个好友,先分成两组, A 组为 1- 150 名,B 组为 151 -300 名。
今天发一组照片,设置 A 组好友可见, B 组不可见,然后静静的等待几天。过了几天小姐姐在相亲网站看到了朋友圈才有的照片。
哟嚯,目标锁定,嫌疑人在 A 组那, B 组好友解除嫌疑。
于是按照上述流程继续对 A 组折半分组钓鱼执法,最后抓到了“凶手”。
你看这就是算法“二分查找”的一个应用。还有一个听得最多的故事就是三国诸葛亮猜数的典故。
part2
传说诸葛亮“借”完箭,率船归岸后,命令 500 军兵清点箭数。
这些军兵从中拣好的箭数够十万支后,发现还剩下一些多余的箭。
军兵们于是便将这些剩下的箭也都清点了一下,正准备报给诸葛亮听,却见诸葛亮轻轻挥了一下羽毛扇,让这个士兵不要报出数来,并对在座的将士们说:“今天大获全胜,大家都很高兴,我呢,就来猜猜这些剩下的箭数,给大家助助兴。”
说完,诸葛亮微笑着对前来汇报的士兵说:“你们都不必说出要报的箭数,但是你们得回答我的问题。
你们中间不论是谁,当我问问题时,你们只要回答‘Yes’或‘No’,我只要问够 10 个问题,我就能知道你们要报的箭数了。”
士兵们一听都不相信,其中的一个士兵迫不及待地站了起来,想尝试一下。
诸葛亮问这位士兵:“你想报的箭数比 1000 大还是比 1000 小?”
士兵答道:“比 1000 小。”
接着,诸葛亮又向这位士兵问:“你想报的箭数比 500 大还是比 500 小?”
士兵答:“比 500 小。”
于是依次问了 8 个问题,等诸葛亮问完,士兵答完,诸葛亮果然说出了个数目 250!
将士们一听,个个拍手称奇,高呼诸葛牛批!!!
结尾:
你可能会吐槽第一个故事的真实性,我也忘记是个新闻还是个段子。
但这不是重点,我只是想用两个故事说明技术(方法)它是来源生活,但又反馈于生活。
另一方面,我尝试用这种故事性的方式来解释知识点的。
欢迎留言分享你用学到的知识解决了那些生活中的问题,又或者给你带来了什么。
PS:二分查找又称折半查找,它是一种效率较高的查找方法。 只适用顺序存储结构。为保持表的有序性,在顺序结构里插入和删除都必须移动大量的结点。
因此,二分查找特别适用于那种一经建立就很少改动、而又经常需要查找的线性表。
微信搜索公众号「一起学大数据呀」,里面有更多学习资料