Поищите «Sedgewick Multikey quick sort» (Седжвик написал известные учебники по алгоритмам на C и Java).Его алгоритм относительно прост в реализации и довольно быстр.Это позволяет избежать проблемы, о которой вы говорите выше.Существует алгоритм сортировки пакетов, который утверждает, что он быстрее, но я не знаю ни о какой реализации.
Есть статья Быстрая сортировка строк в C # и F # , которая описывает алгоритм иимеет ссылку на код Седжвика, а также на код C #.(раскрытие: это статья и код, который я написал на основе статьи Седжвика).