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. 写在最后
我知道,感情不是算法。
人不是数据,爱情不是搜索。
但我想说的是:
如果你像我一样,总是陷入“选择困难症”,总是在纠结“后面会不会更好”,不如试着把自己的需求梳理清楚。
不是因为算法有多厉害,而是因为:
知道自己想要什么,比遇见多少人,重要一万倍。
今日互动:
你心中最看重的三个择偶标准是什么?评论区写下来,看看有没有和你算法匹配的人。