揭開算法的神祕面紗

前言html

其實我一直想寫一篇揭祕算法的文章,由於,據我所見,大多數寫算法的軟件工程師,其實,就是普通程序員,並不是高人一等。程序員

但我一直不知道從何下手,今天姑且嘗試着亂寫一點。算法

最唬人的高大上數組

算法最唬人的東西莫過於公式了。框架

而公式中最唬人的摸過於∑了;這個符號叫sigma,以下圖:post

舉個例子:spa

某公司開會討論項目功能實現,與會人員有:一個項目經理,三個A組成員,三個B組成員和一個算法工程師。設計

而後,討論着,討論着,就遇到了一個爭議功能。3d

A組成員認爲該功能應該循環來處理,B組成員認爲應該使用遞歸來處理,雙方爭議不下。code

此時,項目經理爲了擱置爭議,共同開發。。。而後,請算法工程師發表意見。

算法工程師走到黑板,刷刷刷寫下了上圖的公式。。。而後開始了表演。。。呃,是講解。

「咱們這個功能,我覺使用這個公式來實現最好,這個Ki乘以Mi,而後咱們求一下和,巴拉巴拉。。。」

而後,A組B組成員就都蒙了,由於他們看不懂,也沒聽懂。由於程序員的特質是嚴謹,因此一旦遇到不懂的事情,他們一般是不發表意見的。

而後,在這小小的會議室中,算法工程師的形象就瞬間高大了起來。

"沉默就表示贊成了,那這個功能就這麼處理吧"項目經理說道。

最後,會議結束,由於沒人能看懂這個公式,因此,A組組長和B組組長私下討論了一個解決方案把問題處理掉了。。。

----------------------------------------------------------------------------------------------------

其實這個公式很簡單,就是M=K1*M1+K2*M2+K3*M3+…+Kn*Mn。

什麼?看不懂?

那這樣總該能看懂了吧。

?
1
2
3
4
5
6
7
8
int totalM = 0;
int n = 10;
List< int > K = new List< int >() { 1, 2, 3, 4, 5, 6, 7, 8, 9, 0 };
List< int > M = new List< int >() { 1, 2, 3, 4, 5, 6, 7, 8, 9, 0 };
for ( int i = 0; i < n - 1; i++)
{
     totalM += K[i] * M[i];
}

聰明的你有沒有發現什麼?

【∑sigma】就是for循環有沒有。

這個∑下面i=0,上面n-1就是for循環的條件有沒有;K和M就是兩個Count等於n的數組有沒有。

上面例子中,算法工程師提出的解決方案就是循環處理有沒有。。。

若是算法工程師講公式時這樣說:「K和M集合長度相等,咱們循環一下,計算下K[i] 和 M[i]的乘積,而後累加求和一下。」

是否是就都聽懂了。

固然了,若是他真這樣講,就高大上不起來了。。。

其實咱們天天都在寫算法

想一想咱們寫過的那些複雜甚至噁心的業務邏輯,結合一下上文的例子。

而後,你會發現,其實你天天都在寫算法。。。

只是你不知道如何把你寫的東西,用公式表達出來而已。。。

----------------------------------------------------------------------------------------------------

誠然,常常寫算法的朋友,的確,不少時候能夠給出一個很是好的處理問題的邏輯。

可是,這並非算法工程師在能力上高人一等,只是他們長期應用算法,對計算問題,相對更敏感,因此,處理起來更簡潔,高效。

其實,軟件工程師也同樣,有經驗的軟件工程師,寫的代碼邏輯更清晰,代碼更簡潔,會使用的開源框架更多,這並不能表明什麼,由於,這只是工做能力的高低而已。

嘗試寫一個公式

編寫算法公式其實很是簡單,使用Word就能夠實現啦。

編寫公式步驟,打開Word—插入—公式,而後在裏面選擇公式模板,單擊,就能夠插入公式模板了。

如上圖所示,Word裏提供很是多的公式模板。PS:有沒有發現,勾股定理其實也是一種算法。

插入公式模板後,Word上方的面板會自動跳轉到設計界面。

如上圖所示,這裏有很是多的功能。

----------------------------------------------------------------------------------------------------

做爲程序員,你必定寫過文檔吧,若是你在文檔中加入幾個公式。。。

試想一下,當項目經理看你的文檔時,看到一堆他不懂的公式。。。你在他心中的形象是否是瞬間就高大上起來了呢,O(∩_∩)O哈哈~

固然了,仍是有真正大牛算法工程師,這裏不能一律而論。

但咱們不必自卑的認爲比算法工程師第一檔就是了。

 

 

 

出處:http://www.javashuo.com/article/p-bzmdxioh-ba.html

相關文章
相關標籤/搜索