## Selection Sort Algorithm | Iterative & Recursive

Given an array of integers, sort it using selection sort algorithm.     Selection sort is a unstable, in-place sorting algorithm known for its simplicity, and it has performance advantages over more complicated algorithms in certain situations, particularly where auxiliary memory is limited. It can be implemented as a stable sort.

## Insertion Sort Algorithm | Iterative & Recursive

Given an array of integers, sort it using insertion sort algorithm.     Insertion sort is stable, in-place sorting algorithm that builds the final sorted array one item at a time.

## Heap Sort Algorithm – Overview & C, C++ and Java Implementation

Given an array of integers, sort it using heap sort algorithm in C, C++ and Java.

## Difference between Subarray, Subsequence and Subset

In this post, we will discuss the difference between a subarray/substring, a subsequence and a subset.

## All-Pairs Shortest Paths – Floyd Warshall Algorithm

Given a set of vertices V in a weighted graph where its edge weights w(u, v) can be negative, find the shortest-path weights d(s, v) from every source s for all vertices v present in the graph. If the graph contains negative-weight cycle, report it.

## Single-Source Shortest Paths – Bellman Ford Algorithm

Given a source vertex s from set of vertices V in a weighted graph where its edge weights w(u, v) can be negative, find the shortest-path weights d(s, v) from given source s for all vertices v present in the graph. If the graph contains negative-weight cycle, report it.

## Single-Source Shortest Paths – Dijkstra’s Algorithm

Given a source vertex s from set of vertices V in a weighted graph where all its edge weights w(u, v) are non-negative, find the shortest-path weights d(s, v) from given source s for all vertices v present in the graph.

## Kruskal’s Algorithm for finding Minimum Spanning Tree

Given a undirected, connected and weighted graph, construct a minimum spanning tree out of it using Kruskal’s Algorithm.

## Topological Sort Algorithm for DAG using DFS

Given a Directed Acyclic Graph (DAG), print it in topological order using Topological Sort Algorithm. If the DAG has more than one topological ordering, output any of them.

## Types of edges involved in DFS and relation between them

Describe types of edges involved in DFS of a tree and directed & undirected graph and establish relation between them.

## Arrival and Departure Time of Vertices in DFS

Given a graph, find arrival & departure time of its vertices in DFS. Arrival Time is the time at which the vertex was explored for the first time in the DFS and Departure Time is the time at which we have explored all the neighbors of the vertex and we are ready to backtrack.

## Depth First Search (DFS) | Iterative & Recursive Implementation

Depth first search (DFS) is an algorithm for traversing or searching tree or graph data structures. One starts at the root (selecting some arbitrary node as the root in the case of a graph) and explores as far as possible along each branch before backtracking.