Great material, but it's been directly taken from the source material (<a href="http://cstheory.stackexchange.com/questions/19759/core-algorithms-deployed/19773#19773" rel="nofollow">http://cstheory.stackexchange.com/questions/19759/core-algor...</a>) with no added content. I imagine Vijay (the author of the source material) put a lot of work into assembling this information. Vijay's CS Theory answer should replaced as the URL for this HN submission.<p>EDIT: Removed part of my comment, per the blog author's response below.
A Coding for Interviews [1] group member mentioned that reading through the Java collections library [2] was the most valuable step he took while preparing for his Google interviews.<p>In addition to getting a better understanding the standard data structures, hearing a candidate say "well the Java collections library uses this strategy..." is a strong positive signal.<p>[1]: <a href="http://codingforinterviews.com" rel="nofollow">http://codingforinterviews.com</a><p>[2]: He suggested reading the libraries here: <a href="http://www.docjar.com/html/api/java/util/HashMap.java.html" rel="nofollow">http://www.docjar.com/html/api/java/util/HashMap.java.html</a>
Very nice summary.<p>I encountered many of these while reading through <i>Understanding The Linux Kernel</i> [0] and <i>The Linux Programming Interface</i> [1].<p>Both are great books which are primarily about the "how" of the kernel, but cover a lot of the "why" of the design and algorithms as well.<p>0: <a href="http://www.amazon.com/dp/0596005652" rel="nofollow">http://www.amazon.com/dp/0596005652</a><p>1: <a href="http://www.amazon.com/dp/1593272200" rel="nofollow">http://www.amazon.com/dp/1593272200</a>
On a (slightly) related note, you should also check out the author Vijay's (<a href="http://www.eecs.berkeley.edu/~vijayd/#about" rel="nofollow">http://www.eecs.berkeley.edu/~vijayd/#about</a>) answer on the benefits of learning Finite Automata:
<a href="http://cstheory.stackexchange.com/questions/14811/what-is-the-enlightenment-im-supposed-to-attain-after-studying-finite-automata/14818#14818" rel="nofollow">http://cstheory.stackexchange.com/questions/14811/what-is-th...</a>
I like reading these off stack-exchange since I am often to lazy to read the textbook.<p>My other problem with algorithms textbooks is that I get into arguments <i>with other developers</i> about how much we need them. At least here, I can say "Look bucko, the Linux kernel itself uses them."<p>I decided we can do programming at the API level and never have to think to <i>how</i> that API gives us the right answer. Lower-level programming is responsible for optimization when our number of data points gets larger.<p>And we could go even lower level and ask why the algorithms work in the first place - which is the computer science aspect. I routinely deal with developers who feel they do not have time for this.<p>Also, if the data is small enough scale, we can brute-force it and nobody will notice.
These are great resources. Best advice I was ever given when starting CS and learning C was from the headmaster (hi RR!) asking me "What about Linus's linked-list? Have you looked at them?".<p>Up to that point, this (new) headmaster was seen by the students as "that non-tech guy here to administrate the school" and he was opening my eyes on the biggest codebase residing on my own computer that I never bothered looking through: the Linux kernel code.<p>As someone says further down the comments, this is not a specific Linux thing: looking at how Java HashMaps works or how Ruby implements "map" are great resources and you'll always get bonus points in an interview for referencing algorithms from "proven" source codes.
Awesome answer. This is a treasure for anybody wanting to read data structures & algorithms. I always felt bored to read data structures for the sake of reading them or for interviews with some made up examples. I am sure we can quote many other open source projects with interesting uses of these data structures. This is way more interesting than reading source code of data structure libraries in programming languages.
Excellent, I love reading this stuff. Very helpful and informative for those of us who are interested in computer science but studied in a different field.
Wow! Does anyone know more about the author Vijay D.? Is this the person: <a href="http://www.eecs.berkeley.edu/~vijayd/" rel="nofollow">http://www.eecs.berkeley.edu/~vijayd/</a>
Could someone explain what the utility of bubble sort is? I've read that even in cases where an O(nlogn) sort is impractical, insertion or selection sort is preferred.