Algorithms & Big'O Notation

What is an Algorithm:

        An algorithm is a procedure used for solving a problem or performing a computation. Algorithms act
    as an exact list of instructions that conduct specified actions step by step. There is different types of
    algorithm for differents type of problem. In this I will speak about the most important and fondamental
    algorithm design paradigms.

    Divide and Conquer Paradigm :

This paradigm works in 3 differents steps:

  • Step 1:  Divide the problem into subproblems of the same type.
  • Step 2:  Conquer every subproblems.
  • Step 3:  Combine the solutions of the smaller subproblems to obtain the solution of the bigger problem.

In the most of the Divide and Conquer algorithms with involves recurrence relation

    Greedy algorithms Paradigm :

Greedy algorithms work on problems which it is true that at every step is a choice that
is optimal for the problem up to that step. And after the last step the algorithm produce
the optimal solution of the complete problem.

    Dynamic Programming Paradigm :

This type of algorithm is also known as the memoization technique because in this the
idea is to store the previously calculated result to avoid calculating it again and again.
In Dynamic Programming, divide the complex problem into smaller overlapping subproblems
and storing the result for future use.