Намерих този алгоритъм случайно и много ме впечатли.
Нарича се Radix sort и научих за него от тази статия: http://forums.bgdev.org/index.php?showtopic=22740
Каква е идеята:
Алгоритъма подрежда елементите по битовете на някакви прости стойности (букви, интове и тн). Сложен е за имплементиране, но е ужасно бърз.
Сложността му е О(n*length) където length е дължината на битовете на това което сортирате. Съответно ако сортирате по интове сложността ще е n*32 докато ако сортирате по long ще е n*64.
Уловката е че алгоритъма всъщност не сравнява обекти, а битове. На него не му пука дали класа ви има IComparable. Ако не му дадете прост вид стойност по която да подрежда, той е неприложим.
За повече информация прочетете статията.
Споделете други интересни алгоритми на които сте попадали.