Many people mentioned theoretical information and Omega; (n lg n) tied to comparison sorting algorithms that cannot be broken down into sortings. ( This earlier question explores why this case.)
Nevertheless, there are some types of sorting, which, although they do not violate O (n lg n) in the average case, can be demonstrated to work faster on inputs that are already preliminarily brought to some extent. For example, Dijkstra anti-aliasing is performed in O (n) on already sorted inputs with the worst-case behavior of O (n lg n). One of my favorite varieties, the Cartesian tree species , provably optimally uses presortedness in several ways. For example, it can sort any sequence with a constant number of increasing or decreasing subsequences in time O (n), gracefully decreasing to O (n lg n) in the worst case.
For non-comparison varieties, there are some well-known but sophisticated sorting algorithms for integers that are superior to O (n lg n), making ingenious cunning manipulations. The best-known integer sorting algorithm is a randomized algorithm that can sort by O (n l log lg n), and the fastest deterministic algorithm for integer sorting runs in O (n log lg n) time. You may have heard that radix sorting works in O (n), although technically it is O (n lg U), where U is the largest value in array sorting.
In short, no, you cannot do much better than O (n lg n), but you can do a little better if you know something about your input.
templatetypedef
source share