4

I have been programming for a while, and the edge that I am missing over other programming is algorithms. I know what is linked-list and binary tree, but I dont know many more of them.

I failed on 2 interviews, because of exercises that demanded me to know some data structures algorithms. I am also starting to build a javascript project which has some heavy processing, and I need to know a few good frequently used algorithms?

4

I personally believe it is difficult to learn enough and you should always be looking at what to learn next, either to deepen or broaden your current knowledge base.

However the basic algorithms and data structures required would be:

Minimum

  • Data Structures
  • Ones, Two's Complement, and Related Arithmetic
  • Linked Lists
  • Hash Tables (maps or dictionaries)
  • Arrays, Trees, Stacks, Queues, Graphs, Databases

Algorithms

  • Sorting
    • Bubble Sort (to know why it's bad)
    • Insertion Sort
    • Merge Sort
    • Quick Sort
    • Radix style sorts
    • Counting Sort and Bucket Sort
    • Heap Sort
  • Searching
    • Linear Search
    • Binary Search
    • Depth First Search
    • Breadth First Search
  • String Manipulation
  • Iteration
  • Tree Traversal
  • Hashing Functions
  • Concrete implementation of a Hash Table, Tree, List, Stack, Queue, Array, and Set or Collection

Also, the MOST IMPORTANT thing is to know when to USE them.

Robert, above gave the link for List of Data Structures, Here's for Algorithms

| improve this answer | |
5

http://en.wikipedia.org/wiki/List_of_data_structures

Start with

  • Arrays
  • Lists
  • Graphs
  • Trees
  • Hash Tables

See also http://sijinjoseph.com/programmer-competency-matrix/, wherein the author describes the following levels, in order of increasing competency:

  1. Able to explain and use Arrays, LinkedLists, Dictionaries etc in practical programming tasks

  2. Knows space and time tradeoffs of the basic data structures, Arrays vs LinkedLists, Able to explain how hashtables can be implemented and can handle collisions, Priority queues and ways to implement them etc.

  3. Knowledge of advanced data structures like B-trees, binomial and fibonacci heaps, AVL/Red Black trees, Splay Trees, Skip Lists, tries etc.

| improve this answer | |

Not the answer you're looking for? Browse other questions tagged or ask your own question.