 Pigeonhole sort

Pigeonhole sort Class Sorting algorithm Data structure Array Worst case performance O(N + n), where N is the range of key values and n is the input size Worst case space complexity O(N * n) Pigeonhole sorting, also known as count sort (not to be confused with counting sort), is a sorting algorithm that is suitable for sorting lists of elements where the number of elements (n) and the number of possible key values (N) are approximately the same.^{[1]} It requires O(n + N) time.
The pigeonhole algorithm works as follows:
 Given an array of values to be sorted, set up an auxiliary array of initially empty "pigeonholes," one pigeonhole for each key through the range of the original array.
 Going over the original array, put each value into the pigeonhole corresponding to its key, such that each pigeonhole eventually contains a list of all values with that key.
 Iterate over the pigeonhole array in order, and put elements from nonempty pigeonholes back into the original array.
For example, suppose we were sorting these value pairs by their first element:
 (5, "hello")
 (3, "pie")
 (8, "apple")
 (5, "king")
For each value between 3 and 8 we set up a pigeonhole, then move each element to its pigeonhole:
 3: (3, "pie")
 4:
 5: (5, "hello"), (5, "king")
 6:
 7:
 8: (8, "apple")
We then iterate over the pigeonhole array in order and move them 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:
 3: 1
 4: 0
 5: 2
 6: 0
 7: 0
 8: 1
Using this information we can perform a series of exchanges on the input array that puts it in order, moving items only once. Pigeonhole sort, in contrast, moves items twice: once onto the pigeonhole/bucket array and again onto the destination array. ^{[2]}
For arrays where N is much larger than n, bucket sort is a generalization that is more efficient in space and time.
See also
References
 ^ NIST's Dictionary of Algorithms and Data Structures: pigeonhole sort
 ^ Black, Paul E. (20060619). ""pigeonhole sort", in Dictionary of Algorithms and Data Structures [online"]. U.S. National Institute of Standards and Technology. http://www.itl.nist.gov/div897/sqg/dads/HTML/pigeonholeSort.html. Retrieved 20090426.
Sorting algorithms Theory Exchange sorts Selection sorts  Selection sort
 Heapsort
 Smoothsort
 Cartesian tree sort
 Tournament sort
 Cycle sort
Insertion sorts Merge sorts Distribution sorts  American flag sort
 Bead sort
 Bucket sort
 Burstsort
 Counting sort
 Pigeonhole sort
 Proxmap sort
 Radix sort
 Flashsort
Concurrent sorts  Bitonic sorter
 Batcher odd–even mergesort
 Pairwise sorting network
Hybrid sorts  Timsort
 Introsort
 Spreadsort
 UnShuffle sort
 JSort
Quantum sorts Other Categories: Sorting algorithms
 Stable sorts
Wikimedia Foundation. 2010.
Look at other dictionaries:
Pigeonhole — may refer to:*Pigeonholes, nesting spaces formed in a dovecote (also spelt dovecot or doocot ) *Pigeonhole, one of the boxes in a pigeon coop *Pigeonhole principle, a mathematical principle *Pigeonhole sort, a sorting algorithm *Pigeonhole… … Wikipedia
sort — 1. noun 1) what sort of book is it? Syn: type, kind, nature, manner, variety, class, category, style; caliber, quality, form, group, set, bracket, genre, species, family, order … Thesaurus of popular words
pigeonhole — [n] compartment box, carrel, chamber, corner, cranny, cubbyhole, cubicle, hole, niche, nook, place, pocket, recess, section, slot, stall; concept 434 pigeonhole [v] categorize; shelve assort, class, classify, defer, delay, dismiss, file, group,… … New thesaurus
pigeonhole — I verb allocate, allot, arrange, assort, bracket, break down, catalogue, categorize, class, collocate, divide, docket, file, form into classes, grade, group, index, label, list, methodize, name, order, organize, place, place in a category, put in … Law dictionary
pigeonhole — *assort, sort, classify Analogous words: systematize, methodize, organize, arrange, *order … New Dictionary of Synonyms
sort — n *type, kind, stripe, kidney, ilk, description, nature, character sort vb *assort, classify, pigeonhole Analogous words: arrange, methodize, systematize, *order: cull, pick, *choose, select … New Dictionary of Synonyms
sort — [n] type, variety array, batch, battery, body, brand, breed, category, character, class, clutch, denomination, description, family, genus, group, ilk, kind, likes, likes of*, lot, make, nature, number, order, parcel, quality, race, set, species,… … New thesaurus
sort — I verb allocate, allot, apportion, arrange, array, assign places to, assort, catalogue, categorize, class, classify, collocate, deal, digerere, disentangle, distribute, divide, file, grade, graduate, group, methodize, order, organize, parcel out … Law dictionary
sort out — verb 1. arrange or order by classes or categories (Freq. 3) How would you classify these pottery shards are they prehistoric? • Syn: ↑classify, ↑class, ↑sort, ↑assort, ↑separate • Derivationally relate … Useful english dictionary
sort — Synonyms and related words: adjust, ailing, alphabetize, analyze, appraise, arrange, array, assess, assort, batch, battery, blood, body, body build, bolt, brand, break down, breed, bulk, cast, catalog, catalogue, categorize, category, character,… … Moby Thesaurus