Java教程分享算法系列之算法概述

  好程序員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程序員,都是有非常大的意義,至少寫出來的代碼性能好。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章