Have a look at Introduction to Algorithms by Cormen et al. In my experience, if you know what is in there you are set for anything coming at you.
I would not consider knowing any implementation very useful. If you know the basics you should be able to implement your own version quickly, but chances are you will never have to because there are libraries for that. So the rule for practice is: know your libraries!
Even so, it is important that you know properties of data structures (e.g. space overhead, runtimes of central operations, behaviour under concurrent accesses, (im)mutability, ...) so you will always use the one best suited to your task at hand.
This question is really a little too broad, even the way you've narrowed it down, because it depends on what sort of future path you're looking at. Grad school? PhD track? Industry? Which industry?
But as a rough minimum, I'd say, take a look at CLRS (as Raphael suggests) and pick out the following:
Linked lists, and the variations like stacks, queues, etc.
Basic heaps
Basic hash tables
Trees, especially including binary search trees, and preferably familiarity with at least one self-balancing BST
Graphs, both matrix-representation and adjacency list representation
And probably some more based on what sort of job you're looking for. As someone on a PhD track... well. All of them. At some point you will take a qualifier and be expected to know most of them.
查看麻省理工学院的 OCW 算法简介课程 从理论上来说这是很棒的教程。 要练习 Java 中的数据结构,请检查:数据结构与数据结构。 Robert Lafore 的 Java 算法,非常棒。 用一种语言实现就足够了,但尝试用面向结构化的语言(如 C)和面向对象的语言(如 Java/C++)来解决。这对于准备面试时会有很大帮助。 C 语言基本数据结构的一个很好的资源:此处
Check out the MIT's OCW Intro to Algorithm Course It is great tutorial theoretically. For practicing data structures in Java check : Data Structures & Algorithms in Java by Robert Lafore, it is excellent. Implementation in one language is sufficient, but try to solve it in structured-oriented language like C and OO language like Java/ C++. This will help a lot while preparing for interviews. One good resource for basic data structures in C : here
发布评论
评论(3)
查看 Cormen 的算法简介等人。根据我的经验,如果你知道里面有什么,你就可以应对任何可能发生的事情。
我不认为了解任何实现非常有用。如果您了解基础知识,您应该能够快速实现自己的版本,但很可能您永远不需要这样做,因为有相关的库。所以实践的规则是:了解你的图书馆!
即便如此,了解数据结构的属性(例如空间开销、中央操作的运行时间、并发访问下的行为、(不)可变性等)也很重要,这样您将始终使用最适合您的任务的一种手。
Have a look at Introduction to Algorithms by Cormen et al. In my experience, if you know what is in there you are set for anything coming at you.
I would not consider knowing any implementation very useful. If you know the basics you should be able to implement your own version quickly, but chances are you will never have to because there are libraries for that. So the rule for practice is: know your libraries!
Even so, it is important that you know properties of data structures (e.g. space overhead, runtimes of central operations, behaviour under concurrent accesses, (im)mutability, ...) so you will always use the one best suited to your task at hand.
这个问题确实有点太宽泛了,即使你缩小范围也是如此,因为这取决于你正在寻找什么样的未来道路。研究生院?博士课程?行业?哪个行业?
但作为一个粗略的最低限度,我想说,看看 CLRS(正如 Raphael 所建议的那样)并挑选出以下内容:
并且可能还需要更多基于您正在寻找的工作类型。作为一个正在攻读博士学位的人……好吧。所有的人。在某些时候,您将参加资格赛,并被期望了解其中的大部分内容。
This question is really a little too broad, even the way you've narrowed it down, because it depends on what sort of future path you're looking at. Grad school? PhD track? Industry? Which industry?
But as a rough minimum, I'd say, take a look at CLRS (as Raphael suggests) and pick out the following:
And probably some more based on what sort of job you're looking for. As someone on a PhD track... well. All of them. At some point you will take a qualifier and be expected to know most of them.
查看麻省理工学院的 OCW 算法简介课程 从理论上来说这是很棒的教程。
要练习 Java 中的数据结构,请检查:数据结构与数据结构。 Robert Lafore 的 Java 算法,非常棒。
用一种语言实现就足够了,但尝试用面向结构化的语言(如 C)和面向对象的语言(如 Java/C++)来解决。这对于准备面试时会有很大帮助。
C 语言基本数据结构的一个很好的资源:此处
Check out the MIT's OCW Intro to Algorithm Course It is great tutorial theoretically.
For practicing data structures in Java check : Data Structures & Algorithms in Java by Robert Lafore, it is excellent.
Implementation in one language is sufficient, but try to solve it in structured-oriented language like C and OO language like Java/ C++. This will help a lot while preparing for interviews.
One good resource for basic data structures in C : here