[Algorithm] Recommend books, tuts, anything you think is necessary

04/13/2015 17:08 ​Exo#1
Hello guys, recently I started problem solving at sites like codeforces, topcoder. It's very interesting but, I noticed that everyone is using algorithms to solve the problem or to make it faster. The question is, how do I start learning algorithms, I don't want to waste time reading some useless stuff, I want a fast and an effective way to learn algorithms and more sites so I can practice them, etc.

Any books, I honestly prefer books, I love reading :p

Also if you know some cool websites with good communities for problem solving like the 2 I mentioned above, please drop them here.
04/13/2015 17:15 Serraniel#2
It is mich about maths as well.
Learning algorithm depends much in your idea to use them.
In university for example you learn algorithms you normally wouldn't implement yourself like developing hashmaps, list,queues etc.

If you work woth numbers you may come to a point where you implement euklid...

Base things you should now are like calculating runtime.
04/13/2015 17:50 snow#3
[Only registered and activated users can see links. Click Here To Register...]
[Only registered and activated users can see links. Click Here To Register...]
[Only registered and activated users can see links. Click Here To Register...]

I used the MIT course for preparation and it certainly helped but if you haven't covered algorithms yet, I'd suggest the book.

Oh, and yet another website: [Only registered and activated users can see links. Click Here To Register...] - used it exclusively for my interview preparation.

@Serraniel: You're talking about data structures, not algorithms. And despite their availability in standard libraries, knowing how they are implemented is essential. He's specifically asking for books about algorithm & data structures which you should know both in order to design efficient algorithms.
04/14/2015 00:19 ​Exo#4
Is there any requirements needed before I start with the book?
04/14/2015 17:45 _asm#5
Quote:
Originally Posted by Exo View Post
Is there any requirements needed before I start with the book?
Basic knowledge of solving basic / advanced (depends what you're planning to do) math problems and of course knowledge about programming languages in general :)

And also as snow has suggested, [Only registered and activated users can see links. Click Here To Register...] is a great online portal!
The "Pick One!" option on the website is basically generating a random task and you'll need to solve
e.g. sorting an array the fastest way.
04/14/2015 17:58 ​Exo#6
Can someone explain why "Introduction to Algorithm" is a bad choice?
04/14/2015 21:18 snow#7
Because it covers a lot of algorithms you'll never need and it's really boring to read.

I'd rather read a book that covers the most important ones and uses lots of examples (e.g. The Algorithm Design Manual, it covers data structures[lists, stacks, queues, BST, priority queues, hash tables], sorting and searching [heap, merge, quick, binary etc.], graphs [BFS, DFS] and much more).
04/16/2015 12:54 ​Exo#8
Quote:
Originally Posted by snow View Post
Because it covers a lot of algorithms you'll never need and it's really boring to read.

I'd rather read a book that covers the most important ones and uses lots of examples (e.g. The Algorithm Design Manual, it covers data structures[lists, stacks, queues, BST, priority queues, hash tables], sorting and searching [heap, merge, quick, binary etc.], graphs [BFS, DFS] and much more).
Looks nice, also skiena's lectures are available, I guess I will go for it.

btw, what do you think of competitive programming 3?
04/16/2015 13:09 snow#9
Never heard of it. I've used Cracking the Coding Interview to prepare for my interviews and I'd recommend it because it teaches you how to approach problems.
10/29/2016 14:33 joeguytag#10
it is mostly heard in mathematics. but what really is algorithm? base on my experience and understanding, example you are given a problem and how do u solve it? the steps in the solution is an algorithm. or in programming or making a system we first analyze the system that we are going to make then we analyze how can we make the system, the steps in how to achieve that system or solution is what we call an algorithm, and we take that algorithm and put it into a method like method(). for example 1+1*1=? how do we get this answer is the algorithm :)