Hardcover: 960 pages
Publisher: Addison Wesley; 3 edition (February 24, 2005)
Product Dimensions: 7.7 x 1.6 x 9.2 inches
Shipping Weight: 3.6 pounds
Average Customer Review: 2.8 out of 5 stars See all reviews (39 customer reviews)
Best Sellers Rank: #1,126,532 in Books (See Top 100 in Books) #117 in Books > Computers & Technology > Programming > Algorithms > Data Structures #485 in Books > Computers & Technology > Programming > Languages & Tools > C# #504 in Books > Computers & Technology > Computer Science > Systems Analysis & Design
I am using this book in a class on Data Structures and Algorithms. This book has a lot of material and code in it which makes it good. However, his explanations are terrible. They are ambiguous and unclear. If you can teach yourself from the code, then this is a good book for you. If your looking for clear explanations, look somewhere else.
[A review of the THIRD EDITION 2005]The book teaches two things. Algorithms that are very useful in computing. And how these can be coded in Java.The explanation of the algorithms requires a reasonable amount of mathematical sophistication on your part. They all relate to discrete maths, and cover topics like sorting, random number generation and graphs. The complexity of the discussion is less than that in Knuth's "Art of Computer Programming". Perhaps more akin to Sedgewick or Aho's algorithms texts. There is a fair amount of abstraction that you'll have to deal with.The other task in the book is explaining how Java is well suited in which to code these algorithms. Weiss also makes good use of the Java interface ability. If you think of an algorithm as being implemented in a subroutine [ie. a procedural approach], then the book uses interfaces to let you design a program at a higher level, and making it quite modular and independent of specific implementations of given algorithms.The book does deal with Java 5. But perhaps the most important aspect of Java used in the book is the interface. So the book is quite germane even if you are using an earlier Java.But what if you program in another language? Is the book relevant? Quite possibly. Firstly, some other languages, like C#, have interfaces. More importantly, if you regard the algorithms as the most important aspect of the book, and you are a skilled programmer, then coding is the easier aspect.A remark to a lecturer: If you are teaching a course and are contemplating this book as its text, be careful. Try to ensure that the expected background of your class is compatible with the book. For example, if they will be experienced Java programmers, but have little maths knowledge (and this combination is certainly possible), then the book may not be very useful to them.
I got the 2002 edition of this book for a class one and a half year ago. It is a great book. Yes, the book covers some of the basics of Java, then it goes into various analysis, algorithms, implementations, etc. It is not for beginners, and some math background will help tremendously. There is no way we could have covered all the topics in the book. It is simply too rich. It is very well written and contains great explanation. I especially like the Big Oh introduction. I found myself getting even more out of it every time I go back and read it again. Just like everything else in life, repitition is the key.
This book provides an introduction to algorithm analysis, and data structures and is aimed at an audience with little previous programming experience.The first four chapters are devoted to preliminaries including a brief overview and explanation of core Java, references, objects,classes, and inheritance.The second part of the book covers fundamentals of algorithm analysis, data structures, recursion,sorting algorithms, and randomization. Weiss's presentation of these topics includes some theorems and proofs, but is not mathematically rigorous. The example programs are generally clear and concise. The exercises and projects at the end of each chapter are straightforward.The third part of the book is devoted to applications of the data structures and includes word search puzzles, tic-tac-toe, a balanced symbol checker, file compression, a cross-reference generator, and graphs.The fourth section is devoted to implementations of data structures. Here is where Weiss's work falls short. Most of the implementions presented are adequate, however, the binary tree traversal code that Weiss supplies in Chapter 17 is not only unimpressive but also exasperating. What should be an elegant, concise algorithm is transformed into an incomprehensible mess. Even a mediocre undergraduate should be ashamed of coming up with something this twisted. More elegant treatments of this subject are provided in Sahni's books.The appendices,covering Java platforms, operators, library routines, and graphical user interfaces, seemed unnecessary.In short, the book is adequate only at the introductory level. Serious students and those who require a more detailed and rigorous approach should look elsewhere.
Unfortunately, I cannot say that I much liked this book. The text is very dry, and is not at all fun to read. I was going to try to read it for fun during the summer, but stopped shortly after a few pages. The author's writing style isn't intriguing either. It honestly bugged me how it was written and structured. It's hard to believe that this was published, considering it includes words like "irregardless," which isn't a proper word (ir being a negative, this becomes a double negative, "without without regard"). Luckily, I've been programming long enough that I only needed to refer to it once or twice (and the book didn't help when I did so).