**Bucket Sort** is a sorting algorithm in which elements of input array are distributed in buckets. After distributing all the elements, buckets are sorted individually by another sorting algorithm. Sometimes it is also sorted by recursive method.

**Pseudo code for Bucket Sort**

- Let n be the length of the input list L;
- For each element i from L
- If B[i] is not empty
- Put A[i] into B[i];
- Else B[i] := A[i]
- return Concat B[i .. n] into one sorted list;

**Example of bucket sort:**

Mostly people uses insertion paradigm for little bit of optimization. **Auxiliary Space:** `O{n}`