有哪些學習演算法的網站推薦?

想提高演算法水平。有哪些題庫類型,可以在線提交代碼的優質網站。求推薦。


chrome://bookmarks/OI:

(於 2013.12.27 修改並整理)

看起來樓主的傾向是演算法競賽,以下大部分也都是表現形式為刷題的演算法學習網站~

面試的話看這個:LeetCode Online Judge 或者 Hacker Rank

推薦的講解演算法的網站、好博客

  • http://www.csie.ntnu.edu.tw/~u91029/ 講解、代碼格式、圖表都很規範,覆蓋廣
  • http://www.matrix67.com/informatics.html Matrix67 的一些演算法講解類經典文章,平易近人
  • https://www.byvoid.com/blog/tag/計算機科學 BYVoid 的博客,計算機科學標籤
  • http://fanhq666.blog.163.com/blog/ 范浩強的博客
  • http://watashi.ws/blog/@watashi 的博客
  • 因為百度空間新版升級,許多空間看不到了……

有口碑的穩定的在線題庫

  • http://uoj.ac UOJ
  • http://acm.timus.ru/ URAL
  • http://uva.onlinejudge.org/ UVA
  • http://acm.sgu.ru/index.php SGU
  • http://www.spoj.pl/ SPOJ - 波蘭著名 OJ,好題 / 系列不少,缺點是機器太慢
  • http://poj.org/ POJ - 北大
  • http://acm.hdu.edu.cn/ HDU - 杭電
  • http://ace.delos.com/usacogate USACO - 演算法入門級訓練題(附帶演算法講解)
  • http://livearchive.onlinejudge.org/index.php ACM/ICPC 真題
  • http://oj.tsinsen.com/ 清橙 OJ
  • http://acm.hust.edu.cn/vjudge/toIndex.action vjudge - 各大 OJ 之集結
  • http://projecteuler.net/ 非常有愛的數學/演算法題庫

在線演算法比賽網站(也可作為題庫使用)

  • http://community.topcoder.com/tc Topcoder
  • http://codeforces.com/ Codeforces
  • http://www.codechef.com/ Codechef
  • http://main.edu.pl/en POI 等比賽
  • http://ace.delos.com/contestgate USACO 月賽
  • http://code.google.com/codejam Google Code Jam

(2014.8.18 之後更新)

  • http://www.lydsy.com/JudgeOnline/ 耒陽大視野,前身為八中 OJ,省選及以上刷題必備……

國內入門題庫(主要是 NOIp 級別):

  • http://vijos.org/ 最有名也是最古老的 OJ……目前狀況不明中。
  • http://tyvj.cn/
  • http://www.rqnoj.cn/
  • http://wikioi.com/problem/#

其他相關:

  • http://www.nocow.cn/ 國內的程序設計競賽百科,很悠久了,大概 OIer 都在上面看過 USACO 的翻譯吧……

看你想用演算法幹什麼了.
最高票那個網站提供了一堆, 但是我覺得誰看見了都頭大. 真的. 最好還是只精簡到一個. 否則選擇恐懼真是.....

如果為了找工作而學演算法的話, 自己看看Data Structure and Algorithm in Java就行了. 順便翻一下演算法導論. 不過演算法誰都能理解, 關鍵是自己實現的時候百分百會出錯啊!!!!

所以, 傾情推薦:

http://oj.leetcode.com LeetCode Online Judge

只要每道題都可以保證3遍以內過, 所有灣區工作entry level隨便挑. 涉及到的基本都是Linked List, DP, BST這樣的簡單數據結構或者演算法題.

不難, 但是對於初學演算法的人來說, 能熟練運用這些演算法已經很不容易了. 可以說是非常不容易了. 因為太多的人眼高手低.

所以說, 還是做題最有效. 就算是你看了演算法導論的前幾頁, 知道了什麼是insertion sort, 不見得你寫出來的代碼就是對的. 不信的話, 打開Insertion Sort List, 試試能不能通過.

畢竟, 如果你不是一名產品經理的話, 演算法最後還是要落實到代碼上的.


厚著臉皮來打廣告啦。
計蒜客剛剛推出了一門數據結構課程:數據結構 - 課程
是一個對新手很友好的數據結構課程,就像計蒜客的其他 課程 - 計蒜客 一樣,大多數課節會以「伴隨式」的形式進行教學。講解會隨著輸入的代碼發生變化,對於新手來說,就好像有大牛手把手帶著一樣,會輕鬆一些。
之後這門課還會逐漸地增加內容,近期會在每周五將新一章內容發布。同時也在逐漸的增加更多的教學工具,比如數據結構的可視化等等。
當然啦,在計蒜客也是可以「刷題」的。看難題題庫 - 計蒜客 這裡。目前題庫中的題目都有對應的分類標籤,題目難度大多偏基礎一些,當然也是有難題的,畢竟題庫起名叫「難題題庫」233333……上次計蒜之道比賽的原題都在題庫中,今後也會不斷地增加質量更高的新題。
以上。


對於剛剛學完c語言(了解語法)的人,先買一本劉汝佳《演算法入門經典》,之後開始刷杭電 hdu oj的ID2000之後的中文水題,了解online judge的基本規則,之後買一本秋葉拓哉《挑戰程序設計》,這本書是蛻變,據說ACM區域賽各隊的桌上都會放著兩本書,一本是劉汝佳的黑書,一本是秋葉拓哉的白書:《挑戰程序設計》,開始繼續刷hdu的其他題和書上對應的poj題目,演算法學著學著你就會用到數據結構了,題目我雖然做的不多,但是最後的狀態大概就是一道題目給你,你用N^2能直接暴力出來,但是題目要求你就必須達到N*lgN,迫使你去優化。真正的演算法其實無非是前人(大多數是數學家)思想的代碼化。演算法的最後那塊無非就演變成了數學。


這些都還不錯,主要是國內的
題主可以看看
有很多遊戲開發相關的演算法介紹:
http://www.gamedev.net
http://theory.stanford.edu/~amitp/GameProgramming
http://www.gamasutra.com
http://www.sudoku.com

俄羅斯方塊遊戲的演算法網站:
http://gforge.inria.fr/projects/mdptetris http://colinfahey.com/tetris/tetris.html

leetcode,最近很火的演算法網站:
http://www.leetcode.com

Topcoder,也很經典,每周都有競賽,有獎金的:
http://community.topcoder.com/tc

晉中教育網的「信息學競賽輔導」:
http://www.jzsyz.jzedu.cn/xxjs/suanfa/index.html

很多大學也有自己的競賽題庫,比如:
北大: http://poj.org/
杭電: http://acm.hdu.edu.cn/
華中科技大學: http://acm.hust.edu.cn/vjudge/toIndex.action


geeksforgeeks這個是學習演算法的好網站,好多人說的都是練習演算法的網站


topcoder codeforces前面的人都說了,但是如果想要提高演算法,還是要從最基本的練起,codeforces上去找被過次數多的題先做,當感覺編碼很快那些都很輕鬆,就去在規定時間做模擬比賽,另外,建議提高演算法要按照專題來,去找專題,一般網上都有題號,甚至連難度有的人都標明了,對於各種oj,我要推薦我科的,hust oj,這個可以知道題號,自己掛載相應的題目,進行訓練,你也可以查下相關的專題名稱,搜索一下別人曾掛過的練習,你再做一遍,網上推薦的題目基本上都是有解題報告的,做不出來去看解題報告,hust oj上有些人也將提交的代碼開源了,總之,hust vjudge對於想學習演算法的同學是很不錯的選擇。


這裡的代碼比較全:GitHub - Dev-XYS/Algorithms: 全面的演算法代碼庫


只推薦topcoder, codeforce和geeksforgeeks


演算法與數據結構--矽谷 BAT 程序員必備的內功心法(報名中) - 斯達克學院 - 實戰驅動的 IT 教育平台 - Powered By EduSoho


Welcome To Online Judge

小學生的OJ,給演算法入門的人做完全合適


Codeforces
Welcome To PKU JudgeOnline


推薦LintCode - Home


http://www.topcoder.com/tc


作為一個不知為何對刷題有著蜜汁執念的人,即使題目虐我千百遍,我也依舊對題目如初戀。

我特別喜歡刷題,喜歡探索各種刷題網站,在至少10個大大小小、熱門的、冷門的刷題網站上做過題,目前固定在Lintcode上面進行刷題,下面就談談刷Lintcode的體驗吧。

1.題目全。Lintcode上面目前已有324道題目,基本涵蓋了所有演算法和數據結構的知識點,題目的難度劃分合理,而且可以隨時把握刷題的進度。

2.支持中文。這是我選擇Lintcode刷題的最主要原因,我的英語比較渣,所以特別希望出現一個支持中文的網站,Lintcode上可以很方便地進行中英文切換

3.特色Ladder。Lintcode上的Ladder是目前為止我見過的最走心的求職向階梯訓練,既有各大IT公司的面試真題,也可以進行各大IT公司的在線模擬測試,還可以做《編程之美》、《劍指offer》兩本經典編程書籍里的題目,所以必須強推。

4.筆記功能。這項功能十分人性化,好記性不如爛筆頭,隨時遇到問題隨時進行記錄,可以大大提高學習的效率,加深對問題的理解。

在Lintcode上刷題的體驗大概就是以上這些了,總體來說還是非常棒的,推薦給各位。


可以上馬克威演算法交易平台(http://www.markwaymall.com)看一下,專為從事演算法相關者學習的網站,現在免費即可在線學習,下載,體驗等,平台還包含全球知名開源演算法、分析工具、行業模型等。


我也想來打廣告~~~不過我還沒把東西做出來呢,只有個原型 知維圖 -- 互聯網學習實驗室 急不來。

先來這裡占坑。

吐槽一下, 題主 的問題就值得吐槽, 你到底是要學演算法呢, 還是要通過在線OJ提高演算法水平(有相當不錯的基礎)。

學演算法 就相當於教材的學習, ACM、OJ 就相當於教材的課後難題, 甚至是直接 求心理陰影面積。

如果是刷題、刷ACMOJ, 前面的答主基本是覆蓋完了。

但靠ACM來學習演算法 、 入門, 明顯不靠譜, 這些網站上並沒有教程, codility 好像有pdf。 推薦看演算法導論 也差不多, 直接啃演算法導論, 無聊就刷ACM的人的境界 已經不需要討論怎麼學習、 入門、 提高了。

還有推薦 視頻課程 的算最好的了, 而且 sedgewick這課的作業也帶個高端oj。不只要求正確, 還要各種代碼規範。

最後吐槽下自己, 自己理想是豐滿的, 想弄個互動式學習, 但現實可能會非常骨感, 技術不太懂。 就算做出來了, 可能也沒有想像中的效果。 反正先自黑為敬。 吐槽別人答案不好, 但自己的答案又好到哪裡去呢?


Kevin Wayne, Robert Sedgewick《coursera》 with Java version
partI:Coursera - Free Online Courses From Top Universities
partII:Coursera - Free Online Courses From Top Universities


怎麼少了https://www.hackerrank.com


http://acm.sgu.ru/


推薦閱讀:

「只差程序員」為什麼會招黑?
什麼促使你走上獨立開發者之路?
程序員和設計師等專業人員是否更青睞 OS X / Mac 電腦?
如何評價王垠的《程序員的心理疾病》?
怎麼樣才算是精通 C++?

TAG:學習 | 程序員 | 編程語言 | 演算法 | 編程 | 網站推薦 | 數據結構 | 編程學習 |