如何向沒有編程經驗或數學基礎的人解釋程序的演算法複雜度?

請各位知友設想以下情境:

你工作了一天,優化了一堆不堪入目的代碼。

這堆代碼是一個巨大的歷史遺留問題,O(n^3)的時間複雜度讓用戶使用時頻頻卡頓,產品論壇里充斥著問候開發者女性親戚的溫馨話語。

你被用戶滿滿的問候和祝福感動,決定今天就把這個問題搞定,於是捲起袖子說干就干。經過小半天的奮鬥,你居然用O(nlogn)的複雜度就重構了這段代碼。

在下班commit的時候,想像著用戶覺得無比暢快,紛紛在論壇里為開發者獻上小紅花,相信用不了多久就會升職加薪當上總經理,出任CEO,迎娶白富美,走向人生巔峰。想想,還有點小激動呢。。

可是,日後白富美問起來,你是怎麼走上人生巔峰的,你要怎麼向她解釋你把O(n^3)複雜度的演算法優化成O(nlogn)這樣驚世駭俗的豐功偉績呢?

=====UPDATE===============

故事純調侃!!

解釋的客體,視為完全不懂數學或coding的人群,妹子僅作為一個泛指。

如果力圖清晰,需要為這個問題加上定語,做一個界定的話,這個問題就是:

如何用通俗易懂的語言向完全沒有數學或編程基礎的人解釋演算法複雜度?


事實上我覺得從可計算性到計算複雜度一套整個都是蠻有意思的,因為這套東西幾乎不需要你懂數學。從頭到尾講一遍也是很有意思的事情啊,當然前提對面願意聽的話。


妹子是什麼職業的?用她職業對應的工作來比喻。

比如如果是考古的話,就比作「就像把 1000 片殘破的竹簡拼成一本完整的書」

———————————————————————————————————————————

ps. 能靠優化演算法複雜度名垂青史的恐怕只有學術圈


我把原來一年才能完成的事情變成了幾秒鐘!!!!


為什麼要向人家解釋呢?人家感興趣嗎?你非要解釋,也許只是想在妹子面前裝B,那我只想說,作為一個程序猿,真是得認命。多少可以忽悠妹子的裝B方式,你卻選擇了代碼。。


給高樓裝了台電梯


直接說,我把O(n^3)複雜度的演算法優化成O(nlogn)。她會有不覺明厲的感覺


這個,複雜度可以理解為投入產出比的問題。當妹子在荷花池一兩百塊錢就能拾掇一身漂亮的新衣服,而別人要在春熙路花上千時,她此刻的心情應該和你是一樣一樣的。


我把一個家裡蹲改造成金融界精英了!


打比方,愚公想出門要翻過一座大山很費勁。題主的優化相當於給大山開了一條隧道,媽媽再也不用擔心翻山越嶺了!


「你偶巴我是靠擦屁股發家的」


以前如果用A演算法做TT, xxoo會持續1小時, 現在用我新發明的做TT, xxoo只需要1分鐘.


除非對方也是同行,否則其實沒啥意義的。。

所以人們用錢來衡量。。。

這個問題全世界只有5個人能解決,我解決了。。。這種一般都挺值錢的。。

這個問題真的是因為上一個coder是個傻逼所以才出的問題。。。我覺得你解決再多也白搭吧。。。


你向妹子解釋清楚這個問題,你所消耗的複雜度,如果能做到O(nlogn),那你才有走上高帥富大道的這一天。情商呀~


推薦閱讀:

《三體》引力波廣播,有科學依據?
你所在的行業,有哪些行外人不知道的「騙局」?
人類為什麼要為難自己搞出個閏年?

TAG:科普 | 軟體 | 演算法 | 科技 | 知識普及 |