back

by 0x54MUR41·9y ago·view on hn ↗
Thank you for sharing this.

Anyone would recommend resources for learning fundamental of data structures?

Book, video, or courses are welcome. I don't care the programming languages that are used for implementations. I am OK with C.

9 comments
Skiena's book is excellent and is definitely one to get.

Another would be Sedgewick's Algorithms. He has a pair of courses on Coursera [0] that follow his 4th edition which uses Java.

You're in for such a treat! Learning data structures and algorithms is so fun and really changes the way you think about programming.

[0] https://www.coursera.org/learn/introduction-to-algorithms

Thank you for your recommendation and advice. I will go for Skiena's book since a lot of people recommend it.
The Algorithm Design Manual by Steven Skiena

Really enjoyed that book! It intersperses real world use cases which helps when your motivation starts to wane and has a warmer tone than most algorithm books. That being said, it is still pretty rigorous and will take a lot of work to get through it all.

Whichever resource you choose, make sure it has exercises and do them! Even if you can't 100% figure some of them out just trying to will help your thinking immensely.

I'll second that recommendation and op makes an important point that is rarely expressed when threads on learning algorithms show up on HN: Don't be discouraged if you find the material hard at first, "Even if you can't 100% figure some of them out just trying to will help your thinking immensely."
Thanks a lot.

I like your advice.

Open Data Structures [0] by Pat Morin is a good one, and it comes in 3 editions (pseudocode, java, and c++) so you can pick whichever you prefer.

[0]: http://opendatastructures.org/

If you are interested in Video lectures, there are plenty of resources available at this link: https://github.com/Developer-Y/cs-video-courses

For data structures in specific, You can go through following courses

1. CS 61B, Prof Jonathan Shewchuk, UC Berkeley -> [1]

2. COP 3530 Data Structures and Algorithms, Prof Sahni, UFL -> [2], videos are available at [3]

3. COP 5536 Advanced Data Structures, Prof Sahni - UFL [4]

All above courses focus on ideas than on mathematical rigour.

[1] https://www.youtube.com/playlist?list=PL4BBB74C7D2A1049C

[2] http://www.cise.ufl.edu/~sahni/cop3530/

[3] http://www.cise.ufl.edu/academics/courses/preview/cop3530sah...

[4] http://www.cise.ufl.edu/~sahni/cop5536/index.html

Thank you so much.
In their book The Practice of Programming, Kernighan and Pike explain the really important stuff in about 30 pages, chapter 2 in the book. They cover four data structures: array, list, tree and hash table, and two kinds of algorithms: sorting and searching. They say that just these are enough for most common situations. (They use C.)
Thank you.
The preliminary undergraduate data structures course at my uni was taught using the Data Structures and Algorithms book by Michael T. Goodrich, Roberto Tamassia & Michael H. Goldwasser. The book is available for Python, Java and C++, though I can only vouch for the Java one as I haven't had the opportunity to read the others.

http://ww3.datastructures.net/

Thank you.
I also recommend the Algorithm Design Manual. In my algs class in school, we used Cormen's Introduction to Algorithms (of course), which is considered to be seminal in the field, but that's a bit of a bear to get through.

Alg Design Manual is great and gives shorter shrift to complexity notation and the math behind it, while still giving you a robust introduction to it. Also, it's not as long as it appears as much of the book is devoted to going through specific algorithms so you can be familiar and add them to your mental "tool kit."

OK. I am looking forward for Algorithm Design Manual.

When I was taking analysis and design of algorithm class in my school, my lecturer used CLRS book as the main book. I think that book is so hard to learn. Some parts in the book is easy to understand, some other part is not.

Take a look at the recently released "Grokking Algorithms" [1] by Bhargava. Uses Python for code examples. I haven't read it personally, but has good reviews on Amazon [2].

  [1] http://adit.io/posts/2016-05-25-Grokking-Algorithms-Is-Out.html
  [2] https://www.amazon.com/dp/1617292230/ref=cm_sw_su_dp
Thank you.
I am a fan of Mark Allen Weiss' Data structures and algorithm analysis in C (https://www.amazon.ca/Data-Structures-Algorithm-Analysis-2nd...). It is much smaller than CLRS and the algorithms are listed as C source code rather than pseudo code. I also like the coding style presented in the book.
Thanks. It seems interesting.