抢特卖要靠头脑 教妳买衣服找尺寸比别人快的妙招

时尚中心/综合报导

如果我们想在一列物品里找寻某一品项,就势必要翻遍所有项目,才能找到目标物品吗?假设你在百货公司衣服,一整排的衣服要挑出你的尺寸,除了一件一件翻,还有什么更聪明的方法吗?快看下去就知道啰!

▲要怎么样从一大堆衣服中快速找到自己的尺寸呢?(图/翻摄自wheredoesitcomefrom)

这天是圣诞节翌日。在苏格兰因弗内斯(Inverness)从事护理工作的艾培˙汤亚姆早已跟着大批人群驻守在百货公司外,摩拳擦掌准备迎接今年的节礼日(Boxing Day)折扣。

艾培穿的衣服尺寸是大众尺码,因此她诚心祈祷自己是第一个走进店里的客人,如此才有机会买到尺寸刚好的衣服。她的手脚得够快才行。

▲想百货公司周年庆抢到想要的衣服是个挑战。(图/翻摄自WAER)

这样的激战场面往往会失控,像去年就有十五个人因为推挤而受伤,最后甚至还出动了镇暴警察才稍稍平息混乱。艾培究竟该怎么做,才能比别人抢先一步拿到自己想要的衣服尺寸呢?

建议:试着将这一情境夸张想像。如果这间商店衣杆长度,简直像贯穿了店头店尾那般一望无际,那该怎么办呢?

▲人多衣服也多要迅速找出来一定不能瞎找。(图/商周出版社提供)

如果我们想在一列物品里找寻某一品项,就势必要翻遍所有项目,才能找到目标物品吗?换句话说,假设眼前有一百件物品,我们就得浏览完那一百件物品,也就是要采取执行效率线性时间(linear time)的查找方式吗?

一般而言,线性函数是指,若我们在一百件物品里找寻某一物品需花费一分钟,那么依此推测,在两百件物品里找寻某样物品,就要耗费两分钟。

照常理而论,的确如此,但集合资料(collection)也具有某种特殊性,亦即被排序特性,因而可使我们在执行效率为对数(logarithmic)时间内找到某一资料。换言之,找寻步骤大约为七次,而不再是一百次。

利用集合资料的排序特性,再搭配演算法就能大幅缩短找衣服的时间。(图/翻摄自Shutterstock,以下同)

让我们先想像故事的女主角艾培,踏进店内那一刻的模样吧!她的脸上闪耀着光辉,垂挂在肩膀上的苏格兰纹披巾随风飘扬,仿佛在身后卷起一朵朵浪花

她发自心底涌出的战吼声化作一颗颗子弹齿缝间呼啸而出,扫射整家店的墙面,背水一战取得的战果,足以留供后代子孙景仰凭吊。她整个早晨无时无刻都在对自己信心喊话!

▲大家不妨换位思考,换做自己会如何找衣服呢?

目标:在特定的一排衣架上,找到尺寸刚好的衣服。

方法一:从衣架的一端开始翻找到另一端。

方法二:先从衣架接近中间位置的某处开始找起。若挂在中间区段的衣服为较大尺寸,就改往左边寻找。反之若为较小尺寸,则移往右边寻找。依此类推。

两种方法的比较结果,如下图所示。你注意到了吗?当衣架上的衣服数量增加时,方法一的速度显然比方法二慢。

你或许猜到了,方法二运用了两道解题认知。第一,衣架上的衣服通常会依照尺寸排列。其次,由于艾培要找的是大众尺码,亦即平均尺码,所以通常会被摆放在衣架的中央区块

▲衣架上的衣服数量增加时,方法二的速度更胜一筹。(图/商周出版社提供,以下同)

利用这一直觉能力不仅使她选择从中间位置开始找起,随后也能往左或往右跳跃寻找,是以每次都使那一列集合物件的搜寻数量缩减一半,而这正是执行效率为对数时间(logarithmic-time)之演算法的鲜明特征

你可以运用相同的直觉力在一本字典里查找某个单字,或在电话簿里找寻某个人的名字,或在书籍索引中搜寻某一主题,又或者是在阅读一本冗长小说的过程中不小心坠入梦乡隔天想要找回停顿的段落

简单来说,我们可将这种方法形容为某种讯息抛弃。

▲这种方法不只可以用在找衣服,日常生活中都可以运用。

我们在「对数」概念里最能切身感受到的一点,就是它的增长速度缓慢,诚如先前的比较图所示。人们都偏好增长速度缓慢的解决问题方式,因为这代表这一方法不会那么容易受到眼前处理事物的数量变化而有所影响。

在我们的情境里,艾培在一排挂满一百件衣服的衣架上,只需经过七次以内的步骤就能找到尺寸刚好的衣服,又假设是在一排挂有一千件衣服的衣架上,也只要花费约十次的找寻过程,说起来也不算太麻烦。

这一在有序的集合资料里,以执行效率为对数时间成长展开搜寻的方法又称作二分搜寻法(binary search)。二分搜寻法会比另外一种称作线性搜寻(linear search)的方法(方法一)更有效率,且想必能让艾培在这次折扣活动里满载而归。

▲下次要从很多东西里找出一样时,不妨也用看看二分搜寻法吧。

【书籍推荐】

书名:做决定不要靠运气:从出门购物到分类邮件,用演算法找出人生最佳解

★作者: 阿里.艾默沙维

★出版社:商周出版社

出版日期:2017年10月14日

★建议售价新台币270元