During this last period, also thanks to the Euler project, I have been very interested in algorithms. So I decided to study the most famous ones, plus some random others I found, and to spend some time implementing them.

Here you can find my experiments with brief descriptions.

Most of codes are written in Java, because I'm studying it at the university and need some practice.

Moreover, when advantageous or elegant, recursion is always used.

**Searching algorithms**

Looking for a particular element in the array.

Linear search

Binary search

**Sorting algorithms**

The interesting problem of sorting an array of integers.

Bubble sort

Selection sort

Insertion sort

Quicksort

Counting sort

**Graphs**

A graph is a representation of a set of objects, where some of them are connected by links.

Dijkstra's algorithm

**Trees**

A tree is an acyclic oriented graph where each node has zero or more children nodes and at most one parent node.

In order visit

Interval tree

**Multiple recursion**

In multiple recursion, a method calls itself n times (where n depends on the size of the input) to solve a particular problem.

Permutations and dispositions with repetition

N queens problem

Alternate method for reversing a linked list

**Others**

Algorithms that I couldn't place in the previous sections.

Palindromes

Find the minimum in array

XOR swapping

Operator precedence parsing

Efficient powering of a number

DPLL

Order statistics

Here you can find my experiments with brief descriptions.

Most of codes are written in Java, because I'm studying it at the university and need some practice.

Moreover, when advantageous or elegant, recursion is always used.

Looking for a particular element in the array.

Linear search

Binary search

The interesting problem of sorting an array of integers.

Bubble sort

Selection sort

Insertion sort

Quicksort

Counting sort

A graph is a representation of a set of objects, where some of them are connected by links.

Dijkstra's algorithm

A tree is an acyclic oriented graph where each node has zero or more children nodes and at most one parent node.

In order visit

Interval tree

In multiple recursion, a method calls itself n times (where n depends on the size of the input) to solve a particular problem.

Permutations and dispositions with repetition

N queens problem

Alternate method for reversing a linked list

Algorithms that I couldn't place in the previous sections.

Palindromes

Find the minimum in array

XOR swapping

Operator precedence parsing

Efficient powering of a number

DPLL

Order statistics