posted 4 years ago

I need a book, pdf, article etc which lists the basic algortihms and data structures, their O notation, advantages, disadvantages, where to use/where not to use and may be a small description of how it works.

I want to be able to look it up whenever I have a task that needs an algo or a ds. I dont want a book that goes into too much detail and actually implements the ds or algo.

eg. If my ds needs to be like an array and growable...i refer to the manual and see that arraylist satisfies those needs.

I want to be able to look it up whenever I have a task that needs an algo or a ds. I dont want a book that goes into too much detail and actually implements the ds or algo.

eg. If my ds needs to be like an array and growable...i refer to the manual and see that arraylist satisfies those needs.

posted 4 years ago

You can probably find Niklaus Wirth’s book on that subject free. I do not believe it uses Java in its illustrations.

posted 4 years ago

- 1

Few days back someone pointed out the Shaffer book which is a free book with code samples based on Java.

SCJP, SCWCD.

|Asking Good Questions|

posted 4 years ago

Not sure if the book I mentioned above meets your requirements.

David Blaine wrote:I want to be able to look it up whenever I have a task that needs an algo or a ds. I dont want a book that goes into too much detail and actually implements the ds or algo.

eg. If my ds needs to be like an array and growable...i refer to the manual and see that arraylist satisfies those needs.

Not sure if the book I mentioned above meets your requirements.

SCJP, SCWCD.

|Asking Good Questions|

posted 4 years ago

Are you talking about a Nintendo DS?

Please UseRealWords, or at least explain what your abbreviations mean. The poper way to do it would be like this:

...which lists the basic algortihms and data structures (d.s.), their O notation,...

David Blaine wrote:... and actually implements the ds or algo.

eg. If my ds needs to be like an array and growable...i refer to the manual and see that arraylist satisfies those needs.

Are you talking about a Nintendo DS?

Please UseRealWords, or at least explain what your abbreviations mean. The poper way to do it would be like this:

...which lists the basic algortihms and data structures (d.s.), their O notation,...

There are only two hard things in computer science: cache invalidation, naming things, and off-by-one errors

posted 4 years ago

- 1

Sounds like you would like the Big O cheat sheet. Note the links to wikipedia articles, also a good resource. I also like Steven Skiena's Algorithm Design Manual - you can access parts of this at the Stony Brook Algorithm Repository.

posted 3 years ago

My answer won't help you to go to the deepest level but will help you get started at least.

First thing would be to revise basic data structures linked lists, stacks, queues. Then a little more complex data structures - graphs, binary tress, heaps, threaded binary trees, binary search trees, AVL trees, hash tables. (3 days)

After having revised the data structures you can move to search algorithms - linear search, binary search.(an hour)

The next action item would be to revise sorting algorithms: bubble sort, selection sort, insertions sort, quick sort, merge sort, heap sort, shell sort, et cetera.(a couple of days)

At this point you already have revised fundamentals of algorithms. You can start with asymptotic notations and then move to various design paradigms viz. greedy, divide conquer, dynamic programming (one day for each of the paradigms). You could go for sites like: http://careerguide.techproceed.com

Popular examples under each of the above paradigms:

A. Greedy

1. Knapsack problem

2. Prim's algoritm

3. Kruskal's algorithm

4. Huffmann codes

5. Dijkstra's algorith

B. Divide and conquer

1. Binary search

2. Maximum, minimum

3. Quick sort

4. Merge sort

C. Dynamic programming

1. 0/1 knapsack

2. Matrix chain multiplication

D. Backtracking

1. N queen's problem

E. Branch and bound

All this would take say 10 days. And you will have 3 weeks to go deeper.

First thing would be to revise basic data structures linked lists, stacks, queues. Then a little more complex data structures - graphs, binary tress, heaps, threaded binary trees, binary search trees, AVL trees, hash tables. (3 days)

After having revised the data structures you can move to search algorithms - linear search, binary search.(an hour)

The next action item would be to revise sorting algorithms: bubble sort, selection sort, insertions sort, quick sort, merge sort, heap sort, shell sort, et cetera.(a couple of days)

At this point you already have revised fundamentals of algorithms. You can start with asymptotic notations and then move to various design paradigms viz. greedy, divide conquer, dynamic programming (one day for each of the paradigms). You could go for sites like: http://careerguide.techproceed.com

Popular examples under each of the above paradigms:

A. Greedy

1. Knapsack problem

2. Prim's algoritm

3. Kruskal's algorithm

4. Huffmann codes

5. Dijkstra's algorith

B. Divide and conquer

1. Binary search

2. Maximum, minimum

3. Quick sort

4. Merge sort

C. Dynamic programming

1. 0/1 knapsack

2. Matrix chain multiplication

D. Backtracking

1. N queen's problem

E. Branch and bound

All this would take say 10 days. And you will have 3 weeks to go deeper.

It is sorta covered in the JavaRanch Style Guide. |