好程式設計師Java培訓分享演算法系列之演算法概述

好程式設計師發表於2020-06-02

  好程式設計師 Java 培訓分享 演算法系列之演算法概述 開篇 演算法,一個聽起來很厲害的詞。也是最近幾年特別火的詞。很多大學生都想學習演算法,因為它是大廠和高薪工作的代名詞。但是有關演算法系列的書籍或者文章不多,或者說是成系列的、從入門到精通的文章不多,從而導致我們學習起來比較困難。於是,我就計劃寫一系列適合大學生學習的演算法文章,讓更多的人能學習演算法。本系列的所有演算法實現將採用java 程式碼實現,所以需要有一定的 java 基礎。

什麼是演算法?

Collins大詞典中有如下解釋:

An algorithm is a series of mathematical steps, especially in a computer program, which will give you the answer to a particular kind of problem or question.

在計算機中,由計算機程式(可以是java、c、Python等),透過一系列的數學步驟,解決一個特定問題的方法就是演算法。

大白話理解,演算法就是在計算機中實現數學邏輯或者數學公式的程式碼。

學習演算法需要掌握的知識

1、任何一種程式語言,java、c、c++、Python等。

2、資料結構,不如陣列、連結串列、樹、圖等

3、有一定的數學功底,如果數學知識忘記不要緊,文章中如果涉及到高中以上數學知識的話,也會帶著大家複習一下數學。

演算法和數學聯絡和區別

上面我們解釋什麼是演算法的時候,提到了數學,那麼數學和演算法是什麼關係呢?是不是演算法就等於數學呢?帶著這樣的疑問,我們來看下面的這個例子。

1、一道小學數學題舉例:

題目:請計算1+2+3+4+…+N的和。

數學公式:(1+N)*N/2

上面這個公式就是數學公式,大家應該沒有異議吧。因為我們在小學學習數學的時候就見過這樣的一道數學題。那麼同樣的數學題用java程式碼怎麼實現呢?

2、Java程式碼實現:

/**

 * 計算1+2+3+…+100的和

 * @param n

 * @return 返回總和

 */

public static int algorithm(int n){

    int sum=0;

    for (int I = 1; I <= n; I++) {

        sum+=I;

    }

    return sum;

}

上面這個程式碼,稍微懂程式的人都能看明白,寫得沒有錯,就是一個地道的java程式碼在計算1到n的總和。

3、Java演算法實現:

public static int algorithm2(int n) {

    return (1+n)*n/2;

}

上面程式碼是java演算法實現的1到n的總和,有同學可能有疑問,這不就是數學公式嗎,寫到程式碼裡面就是演算法了?對,這就是演算法。當然,上面這個演算法非常簡單,簡單到方法體內部就是一個數學公式;也會有非常複雜的數學邏輯需要有很多行程式碼才能實現。

總結:用程式碼實現的數學叫做演算法。

學習演算法為什麼要掌握資料結構

演算法必然會有資料的輸入和輸出,比如上面的1到100的演算法。入參就是輸入的資料,返回值就是輸出的資料。往往有一些演算法在執行之前,需要先整理資料(就好比把資料存起來),整理資料必然要涉及到資料結構。資料提前整理的比較好,演算法可能就比較簡單;資料比較雜亂,演算法可能就比較複雜。

演算法的作用

為一個任務找到最合適的演算法,可以大大提升計算機的效能。演算法可以在固定的硬體條件下來提升系統的效能;如果沒有演算法,我們只能靠增加機器裝置來提升系統效能。所以,演算法有助於系統最佳化。往往在實際開發中,為了找到一個最合適的演算法,我們需要反覆且複雜的數學分析,也叫做演算法分析。

總結

演算法是一種特殊的數學形式,掌握演算法,不論是java程式設計師或者c程式設計師,都是有非常大的意義,至少寫出來的程式碼效能好。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69913864/viewspace-2695561/,如需轉載,請註明出處,否則將追究法律責任。

相關文章