**Graphs** are fundamental **data structure** that help to solve many **algorithmic** problems. In this post we show different **graph representations** and their properties.

**Algorithms**

## Merge Sort in Java

In this post we’ll implement **Merge Sort in Java**. It’s fast, divide and conquer, sorting algorithm that can also be **parallelized**.

## Bubble Sort in Java

**Bubble Sort** is a **sorting algorithm** that repeatedly goes through an array and swaps adjacent elements that are not in order. In this post we’ll show how to implement it.

## Towers of Hanoi recursive version

**Towers of Hanoi** is a well known puzzle, very often used to teach recursion. In this post we will show how to solve this puzzle recursively.

## Top 10 sites to practice programming

## Prime numbers – Sieve of Eratosthenes in Java

## Prime numbers – Sieve of Eratosthenes

A **prime number** is a **natural number** with only two divisors: **1** and **itself**.

In this post we’re going to show how to find **prime numbers** using **Sieve of Eratosthenes** and explain how it works.

## Insertion Sort in Java

## Insertion Sort in Java

**Insertion Sort** is another simple to understand and implement algorithm. Unlike **Selection Sort** it can work faster with certain data.

## Selection Sort in Java

## Selection Sort in Java

**Selection Sort** is one of many sorting algorithms, but unlike a few others it is easy to understand and implement as we’re going to show here!

## Binary Search algorithm in Java

## Binary Search algorithm in Java

**Binary Search** is the fastest algorithm for finding an element in a **sorted list**. Also it’s easy to implement what we’re going to show in this post.