*** Welcome to piglix ***

Pigeonhole sort

Pigeonhole sort
Class Sorting algorithm
Data structure Array
Worst-case performance , where N is the range of key values and n is the input size
Worst-case space complexity

Pigeonhole sorting is a sorting algorithm that is suitable for sorting lists of elements where the number of elements (n) and the length of the range of possible key values (N) are approximately the same. It requires O(n + N) time. It is similar to counting sort, but differs in that it "moves items twice: once to the bucket array and again to the final destination [whereas] counting sort builds an auxiliary array then uses the array to compute each item's final destination and move the item there."

The pigeonhole algorithm works as follows:

Suppose one were sorting these value pairs by their first element:

For each value between 3 and 8 we set up a pigeonhole, then move each element to its pigeonhole:

The pigeonhole array is then iterated over in order, and the elements are moved back to the original list.

The difference between pigeonhole sort and counting sort is that in counting sort, the auxiliary array does not contain lists of input elements, only counts:

Using this information, one could perform a series of exchanges on the input array that would put it in order, moving items only once.

For arrays where N is much larger than n, bucket sort is a generalization that is more efficient in space and time.


...
Wikipedia

...