The *gift wrapping algorithm* is an algorithm for computing the convex hull of a set of points, the smallest area containing all points that has no “inward-pointing dents”. You get a similar result when putting a rubber band around some nails in the wall!

- v1.0: Initial version
- v1.1: Update the IDEA logo

*Quicksort* is an efficient sorting algorithm based on a “divide and conquer” approach. Choosing the dividing element at random is a good strategy to avoid bad worst-case runtime.

- v1.0: Initial version
- v1.1: Change title from
**KWICK SÖRT**to**KVICK SÖRT**to make it sound even more Swedish - v1.2: Update the IDEA logo

*Bogo sort*, also known as *stupid sort*, is a simple, but highly inefficient sorting algorithm, which simply shuffles the elements until they are sorted.

- v1.0: Initial version
- v1.1: Change layout of step 4 to make it consistent with other instructions
- v1.2: Update the IDEA logo

*Public-key cryptography* can be used for (at least) two purposes: A person’s public key can be used to send encrypted messages to the keys’ owner. And that person can use their private key to create digital signatures, demonstrating the authenticity of a message.

- v1.0: Initial version
- v1.1: Change title from
**PUBLIC KEY KRÜPTO**to**PUBLIK KEY KRYPTO**to make it sound even more Swedish - v1.2: Update the IDEA logo

*Binary search* is a fast algorithm for finding the position of a value within a sorted array. It reflects the way people intuitively “guess numbers” by repeatedly asking “Is your number bigger or smaller than *x*?”

- v1.0: Initial version
- v1.1: Update the IDEA logo

*Merge sort* is a recursive sorting algorithm based on a “divide and conquer” approach.

- v1.0: Initial version
- v1.1: Use the proper title
**MERGE SÖRT**instead of**MERGESORT**in the recursion - v1.2: Update the IDEA logo

An *AVL tree* is a datastructure which guarantees fast search, insertion, and deletion of items. It’s a self-balancing variant of the *binary search tree*.

- v1.0: Initial version
- v1.1: Update the IDEA logo

The *graph scan algorithm* traverses all reachable nodes in a graph. Its behaviour can be changed by plugging in different datastructures: Using an unordered set results in a random search, using a stack yields *depth-first search*, and using a queue gives *breadth-first search*.

- v1.0: Initial version
- v1.1: Fix a mistake in the bottom
**BROAD SEARCH**example - v1.2: Change title from
**GRÅPH SCÄN**to**GRÅPH SKÄN**to make it sound even more Swedish - v1.3: Update the IDEA logo

This page describes *Fleury’s algorithm*, an elegant method to find an Eulerian path in a graph – a path which visits every edge exactly once.

- v1.0: Initial version
- v1.1: Update the IDEA logo