I am learning Java now a days.
I want to be a successful enterprise
developer. Then what algorithms and
data structures I should be well
versed with? What books would you
To be a successful Java developer, do
I need to know all the advanced
algorithms such as those given in
Can you suggest me a list of the
topics that I should learn in the
descending order of their priority?
Tell me the name of some topics that I
must know. Like Searching, Sorting,
Graphs, Trees etc?
It is good that you are eager to extend and improve your programming skills. It is important however, not to treat algorithms as a catalog of things to memorize. What you need to know to become a good developer (in Java or anything else for that matter) is to understand algorithmic analysis.
You learn this by learning a select few data structures and algorithms, and learning to analyze their performance in terms of time and space (memory). Searching, sorting, graphs, trees, heaps, stacks and all of that good stuff. This should also follow some basics of theory of computation and discrete mathematics (even if in the realm of Java we never get to actually use those two topics directly - their benefits are indirect.)
Separate the learning of a programming language (in your case Java) with the learning of
algorithmic analysis (which is different from the "memorization" of algorithms and data structures.)
George T. Heineman, Gary Pollice and Stanley Selkow's "Algorithms in a Nutshell" is a good start. "Algorithms" by Sanjoy Dasgupta, Christos Papadimitriou, and Umesh Vazirani is another good undergrad textbook.
The best think is to take 9-12 credit courses in programming before taking an undergrad, 3000-level course in algorithms. Barring that, self-study with the two books I mentioned might be a good alternative (self-study might not be for everyone, though.)