[0/20] Algorithms – Returning to the bases

As a software engineer, algorithms are the base of our work and sometimes to resolve a problem you may need to know that works and this is the idea here!



As a software engineer algorithms are the base of our work and one of the task of our job is sometimes resolve a specific problem and to be able to do it you need to know what’s the best way to get there. This is what make us, software engineer, the best tool for this job. I use to ask to my self when I was in college why should I know how to implement a  “Selecting Sort” or “Insert Sort” since I could use a library that could give me everything that I need? Now looking back I can tell you one thing you may think that you are resolving a problem but you are actually skipping the problem.

I will give an example, Arrays, structure that allow us to work with multiple values of the same type but there is one more thing that we need to remember, we want not only store values but also to access each individual value, so let’s review it:

To declare the array, you need to specify a name and the type of data it will contain. To create it, you need to specify its length (the number of values). For example, the “long form” code shown at right makes an array of N numbers of type double, all initialized to 0.0. The first statement is the array declaration. It is just like a declaration of a variable of the corresponding primitive type except for the square brackets following the type name, which specify that we are declaring an array. The keyword new in the second statement is a Java directive to create the array. The reason that we need to explicitly create arrays at run time is that the Java compiler cannot know how much space to reserve for the array at compile time (as it can for primitive-type values). For economy in code, we often take advantage of Java’s default array initialization convention and combine all three steps into a single statement and there’s a few thing that sometimes we don’t think about.

  1. What should we do if the length declared in the initialization is not enough?
  2. What’s the best size?
  3. How we increment the size?

See this is the kind of the detail that I want to share with you all.

The Plan

  1. Stack and Queues
  2. Analysis of Algorithms
  3. Union-Find
  4. Elementary Sorts
  5. Mergesort
  6. Quicksort
  7. Priority Queues
  8. Symbol Tables
  9. Binary Search Trees
  10. Balanced Search Trees
  11. Hash Tables
  12. Undirected Graphs
  13. Directed Graphs
  14. Minimum Spanning Trees
  15. Shortest Paths
  16. String Sorts
  17. Tries
  18. Substring Search
  19. Regular Expressions
  20. Data Compression


To make it happen I’m going to use some of the books listed below:

  1. Statistical Mechanics: Algorithms and Computations by Werner Krauth
  2. The Art of Computer Programming: Fundamental Algorithms Volume. 1: Fundamental Algorithms v. 17 by Donald E. Knuth
  3. Algorithms (Irwin Computer Science) – 1 Oct 2006 by Sanjoy Dasgupta, Christos H. Papadimitriou, Umesh Vazirani
  4. The Algorithm Design Manual – 14 Nov 2011 by Steven S Skiena
  5. Introduction to Algorithms – 20 Aug 2009
  6. Essential Algorithms: A Practical Approach to Computer Algorithms – 5 Sep 2013
  7. Algorithms – 28 Apr 2011 by Robert Sedgewick, Kevin Wayne
3 I like it
0 I don't like it

Leave a Reply

Your email address will not be published. Required fields are marked *