我想學習使用一些非常基本的簡單教程的算法。有沒有在那裏?我聽說過遞歸和東西,我想很好地處理它。任何幫助,將不勝感激。簡單的算法教程?
簡單的算法教程?
回答
麻省理工學院的OCW的算法課程有video lectures。這位教授是「算法導論」一書的作者之一,這是另一位海報的建議。
它假設離散數學的基本知識。
如果你想學習算法this book是最好的選擇。
alt text http://highered.mcgraw-hill.com/sites/dl/free/0070131511/cover/cormen-lg_cover.jpg
+1,因爲它是一本關於算法的優秀書,但它並不像Anon所說的那樣是「非常基本的簡單教程」。前6章是關於數學的! – 2008-11-24 06:30:59
-1,我不認爲這是一個教程。優秀的書,是的。教程,沒有。 – 2009-07-16 22:42:33
第三版現已推出 – SjB 2009-12-17 15:06:57
遞歸是一種語言特性,以及更小的「算法」本身。所有的遞歸都可以用適當的數據結構來替換(比如堆棧)。
我建議抓一本書。算法的問題在於它是一個相對進步的話題。在你能夠學習排序之前,你首先需要學習簡單的搜索,並且你需要進行排序,然後才能進行最小生成樹等。一本書將正確地排序,如果文本沒有給你足夠的信息,那麼互聯網是一個很好的下一個步。試試亞馬遜,看看新人的評論。
確保在嘗試着去學習這個過程之前學習一種實現語言,直到你理解語言如何工作爲止,將很難在你的邏輯中找出錯誤與對特定序列發生的錯誤理解的命令。
我首先看看EternallyConfuzzled,其中包含基礎數據結構和算法的優秀教程,包括鏈表和二叉搜索樹,排序和搜索算法。如果您想了解在這之後更多,我會建議在日益複雜,完整的順序如下書籍和所需的數學知識:
遞歸真的不是算法。由於您沒有任何具體的內容,我建議您閱讀wikipedia's List of alorithms或其他人建議的書。
我建議你從排序算法開始。閱讀相關的wikipedia page,跳過O(n log n)的內容,並關注插入排序,合併排序和快速排序的實現。熟悉binary searching。另外,瞭解一些基本的data structures,如向量,鏈表,堆棧,實現以及它們的用途。 (通常,解決問題的算法與合適的數據結構一起使用)。一旦您對不同的算法和數據結構有信心,您可以參閱更完整的論文,如book by Cormen et al.
至於遞歸,它本身不是算法。它反而是一些算法用於解決問題的技術,當後者可以自然地分解爲子問題時。分裂問題,分別求解子問題,然後合併他們的解決方案以獲得原始問題的解決方案的技術被稱爲「分而治之」或「分而治之」。(遞歸也是大多數編程語言的相關特性,其基本意思是「自稱的函數」)。
「遞歸算法」中引用最多,最瑣碎且最沒用的例子是一個來計算階乘。不介意。相反,請閱讀Tower of Hanoi問題,該問題承認一個簡單而優雅的遞歸解決方案,並再次研究一些排序算法,因爲它們中的許多算法確實是遞歸的。
我將在Stony Brook Algorithm Repository開始。該網站對不同類型的算法有一些非常好的解釋,並且它引用了它使用的書籍和其他資源,以便了解可用的內容。
美國計算奧運會有一個很好的算法training site,到目前爲止,任何人都可以報名參加這幾乎像格式的類。讀一點,做練習,多讀,做練習等
爲了誰曾評論這本書xyz是不是簡單的各種各樣的人,我想指出的是,Algorithmics的是不是一個簡單的話題。您至少需要大學入門級數學來理解概念以及在適當的抽象層次上推理計算的能力。如果你找到一本「Algorithmics for Dummies」書,不要浪費你的錢!
算法問題我最喜歡的列表之一是Project Euler,它們很不相同,你可以多次解決相同的問題進行優化,你會發現許多社區(C++,C#,Python等)發佈他們的基準爲每一個問題
它是如此多的樂趣,怪胎樂趣
TopCoder公司有一些好的algorithm tutorials。
通過TopCoder公司解決問題的辦法是去拿起算法一種非常好的方式。閱讀理論本身並不會幫助
解決作爲SPOJ等各種網站的問題。並閱讀關於算法簡介的書籍,在coursera上也有一些在線課程。
如果您對教程感興趣,請避免上述CLRS圖書推薦。它需要嚴格的理論方法來研究算法,這與教程法非常不同。
你學會算法做他們。所以找到解決它們時提供算法問題和指導的資源。如果你想要一本教科書,請查看算法設計手冊,它也有一個在線Algorithm Repository。 如果你喜歡一個在線課程,Udacity提供一個基於Python的算法當然,在Coursera提供general和Java-based的。
由於重要組成部分,是練的算法,你可以跳過視頻課程,只是解決的挑戰。其他答案表明,一旦你擅長算法,你可以練習一些有挑戰的網站。在開始時,您需要更多指導,因此找到一個提供算法挑戰並幫助解決它們的資源。我爲此創建了Learneroo。您可以從Recursion Tutorial瞭解遞歸基礎知識開始。
汗學院在算法上開始了一個極好的互動自我節奏的課程 - https://www.khanacademy.org/computing/computer-science/algorithms。
- 1. 簡單遺傳算法教程的時間表?
- 2. Java簡單的REST教程?
- 3. DCOM的簡單教程
- 4. Maven簡單天氣教程
- 5. Boost的Dijkstra算法教程
- 6. jQuery和ExtJS的最簡單的教程
- 7. 尋找DES算法教程
- 8. 算法視頻教程
- 9. 簡單的方法來插入教義
- 10. 簡單的jQuery教程不會工作
- 11. 有什麼簡單的zlib教程?
- 12. 簡單的沙盒按鈕教程
- 13. 簡單的教程SFML代碼崩潰
- 14. asp.net ChangeAction - 簡單教程的問題
- 15. Cakephp簡單的搜索引擎教程
- 16. 簡單形式的iphone導航教程
- 17. 簡單的光線追蹤教程?
- 18. AngularJS - 簡單的教程不會工作
- 19. WordPress的簡單購物車教程?
- 20. 有沒有簡單的PhoneGap教程?
- 21. PHP的簡單LinkedIn API教程
- 22. 簡單的Ruby on Rails教程
- 23. MSBuild擴展包簡單的教程
- 24. 學習C#,需要簡單的教程
- 25. 任何簡單的glUnProject教程?
- 26. 簡單D3教程不是從本教程中出現
- 27. 簡單的乘法運算
- 28. 簡單的算法分析
- 29. 簡單的檢測算法
- 30. 簡單的爬山算法?
這些講座非常好(特別是Erik Demaine的講座),但我幾乎不把它稱爲「非常基本的簡單教程」。 – 2008-11-24 08:42:44