学习算法与数据结构,有什么比较好的MOOC或者比较好的书籍推荐?
清华邓老师的 《数据结构算法》, C++, 非常经典, 质量非常高, 最大的特色是讨论问题系统完整,难度有, 最大的价值是那套完整的数据结构code,唯一的缺点是题太少,可能是邓老师不主张刷题吧。
要刷题的话,浙大《数据结构算法》, 课程内容也不错(但显然是不如邓老师的课),好处是题多, 有一整个oj给你各种难度慢慢刷,可以好好刷题。刷累了可以再去考一个姥姥的PAT。哈哈哈哈。
edx上普林斯顿的《算法》, 也就是算法那本书的作者按照《算法》书的顺序给你讲一遍,java, 讨论问题很深入,PPT非常好。可以零散的听作为邓老师的课的补充。当然, 如果你必须要java based的, 那也可以系统跟这门。
最后是stanford的《算法分析与设计》, 是《数据结构及算法》的进阶课。 目前没有可以替代且质量高的中文课程。
这四门这些年断断续续基本都刷完了, 有些内容甚至刷了很多遍。 如果你想要系统的学一遍的话, 建议1先系统啃一遍。
至于MIT的算法和高级数据结构这两门课。 《算法》属于录制课程, 配套不是很完善,视频也不清晰, 难度是有,总之学习体验真的很不友好,在完全木有mooc的当时, mit的全面开放录制课程确实值得d大大的点赞, 但现在来看, 这批视频的质量还有配套设施都有点落后了 , 我个人不是很推荐。 高级数据结构那些数据结构真的是太fancy了, 我真的觉得没什么用。
书这块的话。不要刷《算导》,不要刷《算导》,不要刷《算导》。我这辈子就没见过谁,真的刷完了算导。这就是本工具书,查一查了不得了。翻译也不是非常好。
看〈算法〉不如去看作者讲的课。〈算法设计与分析〉是好书,可看。但我觉得Stanford的课更好。
倒是推荐两本,一本是我软的〈编程之美〉,一本是〈编程珠玑〉,两本都不是那么典型的数据结构教程,而是真的应用算法解决实际问题的书。其中,珠玑是解决真的工程问题。而编程之美则是五花八门什么样的问题都有。
最后的最后,万事开头难,如果是选择一件事去做的话,我选邓老师的数据结构与算法课。