演算法到底應該怎麼學?

時間 2021-05-05 23:45:48

1樓:

學習演算法-首先從數學開始-玩過ACM國際比賽-都知道比賽-都是數學基礎。

學習演算法-重要-還是在於思路-解題思路-跟數學一樣。

提問者出的題目-叫你解題。

那麼演算法-出演算法作者-就是叫你解析他出這道演算法題目。

比賽-也是一樣。

我也不給你提供任何為什麼要從數學入手學習演算法-但我介紹-兩位數學家以及計算機科學家-這時候-你知道數學就是演算法。

Alexander Schrijver和Jack Edmonds。

至於我為什麼不告訴你數學就是演算法-這是對你自己未來的挑戰。

不管是TopCoder還是Google code Jam都需要數學基礎才可入手演算法深入。

請珍惜。

一般碼農只會教你幾十年的基礎-也就是-資料結構之類。

或者別人提出的演算法題-叫你刷題等。

宣告:我不是碼農界-既然是我專業-那麼我得認真的回答。

2樓:

就那樣學,還沒學完,這是我自已的一點小小心得,寫的很亂,但是思路大概是這樣。

不知道正不正確,反正就按這思路學的。

字很醜,不過知識不醜。

3樓:黃哥

你的情況,先學資料結構與演算法(C語言描述的),再去刷LeetCode。

本書為超級書《大話設計模式》作者程杰潛心三年推出的扛鼎之作!以乙個計算機教師教學為場景,講解資料結構和相關演算法的知識。通篇以一種趣味方式來敘述,大量引用了各種各樣的生活知識來模擬,並充分運用圖形語言來體現抽象內容,對資料結構所涉及到的一些經典演算法做到逐行分析、多演算法比較。

與市場上的同類資料結構圖書相比,本書內容趣味易讀,演算法講解細緻深刻,是一本非常適合自學的讀物。

本書以乙個計算機教師教學為場景,講解資料結構和相關演算法的知識。通篇以一種趣味方式來敘述,大量引用了各種各樣的生活知識來模擬,並充分運用圖形語言來體現抽象內容,對資料結構所涉及到的一些經典演算法做到逐行分析、多演算法比較。與市場上的同類資料結構圖書相比,本書內容趣味易讀,演算法講解細緻深刻,是一本非常適合自學的讀物。

本書主要內容包:資料結構介紹、演算法推導大O階的方法;順序結構與鏈式結構差異、棧與佇列的應用;串的樸素模式匹配、KMP模式匹配演算法;二*樹前中後序遍歷、赫夫曼樹及應用;圖的深度、廣度遍歷;小生成樹兩種演算法、短路徑兩種演算法;拓撲排序與關鍵路徑演算法;折半查詢、*值查詢、斐波那契查詢等靜態查詢;稠密索引、分塊索引、倒排索引等索引技*;二*排序樹、衡二*樹等動態查詢;B樹、B 樹技*,雜湊表技*;冒泡、選擇、*入等簡單排序;希爾、堆、歸併、快速等改進排序

本書適合學過一門程式語言的各類讀者,包括在讀的大計算機專業學生、想轉行做開發的非專業人員、欲考計算機研究生的應屆或在職人員,以及工作後需要補學或溫習資料結構和演算法的程式設計師等

4樓:琉璃於飛

看過演算法導論的書奔潰了。趕腳還是太理論了,估計常用的幾種演算法像是分段演算法了解下,最優路徑學習下。

很多還是遊戲開發上對演算法要求比較多。或者行業性極強的系統對演算法也有要求。

但是普通系統倒是好像演算法不太用得到呢

5樓:Heiral

You begin with a small step, get some momentum, and move on.

Now, let's solve a problem.

Given a few integers, find out a pair of two integers whose sum equals another given integer.

Naturally you pick two integers from the pool and test if they meet the criteria, and you walk through all possible pairs.

This natural or intuitive way is called brute force and is usually misleading when we're talking about how fast you get the answer when there are too much integers.

Your job is to systematically design a fast enough step-by-step plan.

This step-by-step plan is also known as an algorithm, though plan is much more common for laymen.

Here is what it looks like for a good enough plan (written in a language called Swift, rendered by another language called TeX).

6樓:斯達克學院StuQ

願意跟著在大廠的演算法大牛學嗎?

演算法與資料結構--矽谷& BAT 程式設計師必備的內功心法(報名中) - 斯達克學院 - 實戰驅動的 IT 教育平台 - Powered By EduSoho

7樓:ThingsVR

個人理解,演算法和資料結構之所以不容易理解與記憶,是由於計算機處理是基於迴圈的,而常規數學描述是線性的,是適合人腦理解記憶的,因此最好的辦法就是將演算法迴圈展開,每一步資料視覺化。這樣就會對演算法的抽象描述有個形象記憶。拿pyqt照著visualgo模式擼個框架也就花個2周時間,後邊自己逐步擴充套件就行了

8樓:

演算法,個人理解還是思維方式,不同的思路解決不同場景的問題,死記硬背對加深理解沒有太多用處,要我說還是多練,不斷理解演算法思想,做到靈活運用。

9樓:趙能幹

首先個人情況是會C和python,但在看演算法c語言實現時,用c來實現感覺總是在糾結演算法之外的東西,一怒之下決定用語法和結構足夠簡單的python來實現,不但刷題超快,而且能細緻體會到演算法每一步的意義,有成就感,就學的快!

一家之言,僅供參考

10樓:ll kid

演算法不是用來記憶的,就像數學證明不能通過背誦學會。

重要的是邏輯。

建議看看Coursera上Stanford的演算法課,你會真正明白演算法是怎麼一回事。

《演算法概論》也推薦一下

11樓:李遙

演算法入門要看那幾本經典的書,但是高階的話要看乙個人的聰明程度和綜合各種學科的知識的能力。說到底遇到新情況你就沒有書可以照搬了,這時還是看人聰明不聰明:

我記得大一學校有個什麼數學建模班,作為考試入班需要提交乙個程式解一大堆應用題中的乙個。彼時演算法課計算機系還沒有教,其他系更不用說。但是還是有各種人物用自發明的各種演算法加上自學的C和C++把各種問題都啃下來了。

不用任何框架直接C++/COM加3D碰撞檢測的DirectX遊戲照樣有人做出來,還不是計算機系的。我那時覺得已經到我腦力極限的DirectX/OpenGL英文手冊在他看來和日漫一樣簡單

12樓:Yong He

刷與不刷ACM ICPC的人在演算法能力上會有巨大差距。

如果真想深入掌握各種演算法,還是先刷題吧。刷到一定境界再去看更高階的演算法書。

不得不承認現實生活中,一般碼農工作對演算法能力要求太低了,這一度讓人們(包括我)認為演算法似乎不那麼重要。其實學習演算法所鍛鍊出來的對各種問題敏感的反應和融會貫通能力還是非常重要的。

13樓:

可以先寫簡單版本的實現,演算法和資料結構是息息相關的。先把各種資料結構實現出來,然後在此基礎上實現一些簡單的演算法,比如八皇后、快排等。如果語言存在問題,還是先學好語言,入門還是推薦C語言,python我個人不是很推薦作為入門(求大神勿噴)

14樓:ze ran

就像你的那本書名字一樣,要實現你學的演算法,在電腦上打出來跑起來,放入足夠量的資料,比較各演算法的優劣。再嘗試去修改你的演算法,看看結果有什麼變化。

C 到底應該怎麼學?

應該怎麼學 我覺得並沒有乙個適用於所有人的方法,因為每乙個人的精力,知識背景都不相同,最多不過是大家把自己學習c 的經歷分享出來,是否適合你,你要自己鑑別,不要一味模仿,浪費了自己寶貴的時間 結合自己的實際情況 我補充一下關於字串格式化的問題,使用純C的話如果你需要知道確切的buf大小,可以使用vs...

數學到底應該怎麼學?

小小老師 很多學生都在數學頭疼,數學對於他們來說簡直就是致命的弱點。那麼究竟怎樣才能學好高中數學呢?1 認真聽講 上課認真聽講,跟著老師的思路去思考,學習起來就會很容易,上課的時候一定要聚精會神,並且將一些有疑問的地方及時記錄下來。2 多多刷題 想要學好數學僅僅靠聽是遠遠不夠的,所以說除了認真聽課還...

高中歷史到底應該怎麼學

星橙 高中歷史無非那幾本書,第一肯定是要背的滾瓜爛熟的,特別是史實,年份,事件連在一起,自己做時間軸,把題目和答案連起來背,多用專業術語,到了高三做文綜試題的時候也就會輕鬆一點。當天知識當天背完,不要日積月累多到期末或者高三再來,那樣真的很累,老師總結的時候認真聽,那樣也方便複習,選擇題用排除法比較...