Data Structure / 4 min read Introduction to Dynamic Programming 1. What is Dynamic Programming? Dynamic Programming is an algorithmic paradigm that solves a given complex problem by breaking it into sub-problems and stores the results of sub-problems to avoid computing the same results again. Dynamic programming is used where we have problems, which can be divided into similar sub-problems,

Data Structure / 3 min read Introduction to Greedy Algorithms 1. What is Greedy Algorithm? A greedy algorithm, as the name suggests, always makes the choice that seems to be the best at that moment. This means that it makes a locally-optimal choice in the hope that this choice will lead to a globally-optimal solution. However, generally greedy algorithms do

Data Structure / 2 min read Introduction to Divide and Conquer (D&C) Algorithm Design Paradigm 1. What is Divide and Conquer? Divide and conquer (D&C) is an algorithm design paradigm based on multi-branched recursion. A divide and conquer algorithm works by recursively breaking down a problem into two or more sub-problems of the same type, until these become simple enough to be solved

Data Structure / 2 min read Introduction to Asymptotic Notations 1. What is Asymptotic Notations? Asymptotic Notations are languages that allow us to analyze an algorithm’s run-time performance. Asymptotic Notations identify running time by algorithm behavior as the input size for the algorithm increases. This is also known as an algorithm’s growth rate. Usually, the time required by

Data Structure / 3 min read Introduction to Data Structures and Algorithms 1. What is Data Structure? A data structure is a particular way of organizing data in a computer so that it can be used efficiently. Data Structures is about rendering data elements in terms of some relationship, for better organization and storage. For example, we have data of an employee

Primary / 8 min read Big-O Notation Explained with Examples Asymptotic notation is a set of languages which allow us to express the performance of our algorithms in relation to their input. Big O notation is used in Computer Science to describe the performance or complexity of an algorithm. Big O specifically describes the worst-case scenario, and can be used