《我用二分查找,终于找到了愿意嫁我的人》

2 阅读5分钟

01. 一个程序员的困境

说出来你可能不信,我单身了30年。

不是因为我丑——长得还算能看,身高173,体重145,发际线也还在。

也不是因为我穷——广州互联网公司上班,年薪到手能买一辆B级车。

真正的原因是:我把找对象这事,想复杂了。

真正的原因是:我把找对象这事,想复杂了。

我在大学时代学到一个概念叫 “最优停止理论” ——就是那个著名的“37%法则”:如果你打算面试100个人,那么前37个人一个都不要选,只用来建立标准;之后遇到第一个超过这个标准的,立刻拿下。

我想,找对象不也是这个逻辑吗?

于是从25岁开始,我给自己定了一个目标:先见100个女生,前37个坚决不心动,后面遇到更好的就定下来。

逻辑完美,对吧?

结果呢?

我见了3年,累积见了大概60多个女生。前37个确实没有心动(主要是人家也没看上我),但38号之后的那些,我发现一个诡异的问题——

我好像永远都能遇到更好的。

第45号比38号温柔,第52号比45号漂亮,第58号比52号有趣……

我陷入了无止境追逐最优解的死循环

直到有一天,我打开IDE写代码,随手写了一个二分查找,突然被一道闪电劈中了。


02. 二分查找给我的启示

二分查找(Binary Search)的核心逻辑是什么?

前提:数据必须有序
步骤:每次都从中间开始,判断目标在左还是右
结果:最多log₂N次就能找到目标

而我的“见100个再决定”,是什么?

相当于遍历整个数组(O(n)) ,时间复杂度是二分查找的几十倍。

而且更致命的是——我根本不知道我的“数组”有多长

老天爷给我准备的对象池子,是100个?还是1000个?还是只有10个?

如果我硬要遍历完才能做决定,可能遍历到一半,人家已经被别人“选中”了。

我忽然明白了一个道理:

找对象不是遍历,而是二分查找。
前提是你得知道自己要什么,然后把“择偶标准”有序化。


03. 我把择偶标准写成了排序算法

那天晚上,我打开Excel,把所有我能想到的择偶标准列了出来,然后按照硬性指标软性指标分类:

分类指标权重(1-10)可否妥协
硬性年龄≤我3岁8
硬性本科以上6
硬性不抽烟9
硬性有正常工作7
软性长相顺眼7是(5分以上即可)
软性性格开朗8
软性收入≥我一半5
软性聊得来9

关键一步:我按权重排序了。

这意味着,我不会再被“漂亮但聊不来”的人干扰,也不会被“收入高但性格差”的人带偏。

因为二分查找的前提就是有序数组——我把指标按权重排好,每次只比较最重要的那个维度。


04. 实战:我用二分查找相亲

新的方法论落地:

第一步:不管见多少人,先明确我的“目标值”——一个综合分≥85分的女生(满分100,按上面权重算)

第二步:每次见面,快速打一个综合分

第三步:如果分数<85,直接放弃(不用纠结,因为我知道自己不要什么)

第四步:如果分数≥85,重点考察,不再继续见其他人

你看,这不就是二分查找吗?

每次比较,都能排除掉一半的选项。

和之前“见100个”最大的区别是——我不用知道总共有多少个样本,也能做出最优决策。

因为我已经知道自己要什么了。

半年后,我遇到了现在的老婆。

第一次见面,我偷偷打了分:87分

按照算法,我应该停止搜索了。

但我当时还是有点犹豫(毕竟是程序员,总要考虑边界条件),于是又见了两个,一个78分,一个81分。

回来之后我想了一晚上,第二天给她发了一条微信:

“我想停止搜索了,你就是我的最优解。”

她回:“你是不是又写了个死循环?”


05. 这个算法真的成立吗?

结婚两年了,我来复盘一下这个方法的有效性:

优点:

  • 节省了大量时间(不用见100个)
  • 减少了内耗(不会纠结“后面有没有更好的”)
  • 结果很满意(老婆综合分一直稳定在87以上)

缺点:

  • 太理性,少了点浪漫(老婆说我当时像在面试她)
  • 权重设置很关键(搞错了标准,就是一串bug)

后来我跟老婆坦白了这个算法,她白了我一眼:

“你们程序员真没劲,找对象都要写代码。”

但是她又加了一句:

“不过我确实挺符合你的标准的,算你算法写得还行。”


06. 写在最后

我知道,感情不是算法。

人不是数据,爱情不是搜索。

但我想说的是:

如果你像我一样,总是陷入“选择困难症”,总是在纠结“后面会不会更好”,不如试着把自己的需求梳理清楚。

不是因为算法有多厉害,而是因为:

知道自己想要什么,比遇见多少人,重要一万倍。


今日互动:
你心中最看重的三个择偶标准是什么?评论区写下来,看看有没有和你算法匹配的人。