Algorithms in Java (Third Edition) Book Review

The book Algorithms in Java is huge, but unlike the usual huge books, the content is very interesting. It can be used as reference material, or as toilet book (to learn things while you’re wasting time in the toilets).

You will learn simple things, like what is the “raison d’être” of linked lists. The author gives very good examples to illustrate his propositions. He explains through the sieve of erathostene and through Josephus problem the advantages of arrays or linked list.

You will learn step by step everything that is to be known in algorithms. Recursion, divide and conquer, Tree knowledge will be useful for the later sorting and searching chapters.

The chapter on Hashing will make you understand very clearly why the source of String.hashCode() is

public int hashCode() {
  int h = hash;
  if (h == 0) {
     int off = offset;
     char val[] = value;
     int len = count;
     for (int i = 0; i <  len; i++) h = 31*h + val[off ++];
     hash = h;
  }
  return h;
}

There might be too much info on different types of sorting algorithms and the book becomes there more a reference book than anything else. But overall, you will learn plenty with this book. It is very well written, complete, and will refresh one’s memory. I find it useful to read back things I learnt after a few years as I then have a very different view of the subject, and I pay closer attention to some details I completely missed the first time (sometimes).
Tags: