It does seem to be missing quite a bit. I was sure Fenwick had to be there under another name, but I don't see it. Union-find is an even weirder miss, that's a _great_ data structure and very useful. I couldn't think of any other term it'd be hiding under.
The few I couldn't find off the top of my head: square-root decomposition, heavy-light decomposition and really anything at all on Range Minumum Query, one of my favorite general problems (IMO far more interesting than sorting as a group of techniques to focus some time on).
I think you usually see ufds on fixed arrays because it makes the algorithm analysis a bit more interesting. If you have lookups cost more than O(1) I think you'll wash out the fun parts of the analysis.
This is a great resource, but I wish data structures & algorithms courses would focus more on applications. I'm more interested in knowing why a data structure is useful and in what context I should reach for one, vs. simply knowing what it is.
I wrote something sort of adjacent to what you're talking about. It wasn't about applications persay but instead it was a guide / decision tree that took everything I learnt on how to make choices on what datastructure or algorithmic approaches applied to different problems (from doing the Blind 75 problem set).
There is an absolutely wild range in data structures courses. A lot of colleges merge data structures and algorithms and some do each separately. I went to one with them separate and we focused on the application because we had time to. I can't imagine that we could have actually covered complexity if we were doing both in one semester.
In my undergrad at University of Michigan it was combined. I do not remember if we covered it but I was already exposed to industry at that time and was far more advanced in the practical than the rest of the class.
The benefits of algorithm selection only really started to become apparent after years of experience and know-how in what _exactly_ an application requires or intends to be used as. Knowledge that is skipped at all levels of computer science education.
His book, the Algorithm Design Manual, gets a lot of praise. But I found it far too fluffy, and lacking in rigor. And he doesn't even do a good job of talking about applications.
https://www.redblobgames.com/ is a really good resource that gives a lot of context, and doesn't shy away from technical details.
I don't know if an alphabetical list of algos is a good starting point for a learner. For someone who is either starting out or wants to confidently master the topic, this classic book is the way to go.[1]. I also think this is your best lever to leveling up as a dev and crushing faang coding interviews if that's your goal.
I have a tangential question to this: how would one go about doing the reverse search of this list. For example I have this algorithm that I know about, I could describe how it works roughly but I don’t know its name and want to know if it’s in the list. Maybe nowadays write a pseudo code version of it, give it to chatGPT and ask for the name of it… otherwise I don’t know
Dictionary of Algorithms and Data Structures (1998) - https://news.ycombinator.com/item?id=12758176 - Oct 2016 (18 comments)
Dictionary of Algorithms and Data Structures - https://news.ycombinator.com/item?id=8905348 - Jan 2015 (4 comments)
Dictionary of Algorithms and Data Structures - https://news.ycombinator.com/item?id=5525893 - April 2013 (15 comments)
Dictionary of Algorithms and Data Structures - https://news.ycombinator.com/item?id=2496539 - April 2011 (16 comments)
Dictionary of Algorithms and Data Structures - https://news.ycombinator.com/item?id=2351074 - March 2011 (1 comment)