Значит, тогда так:
сначала сортируешь массив любым способом (из FAQ-а) по невозрастанию ПЕРВОГО элемента (фамилии), а потом (с уже отсортированным массивом) делаешь следующее:
1) ищешь
максимальную последовательность одинаковых подряд идущих фамилий (запоминая ее начало, т.е. ты должен в любой момент знать, где в массиве начинается самая длинная последовательность одинаковых фамилий, и сколько именно одинаковых фамилий она содержит)...
2) когда макс. последовательность найдена, просто меняешь местами max (это ее длина) первых элементов массива с элементами, начинающимися с max_pos (это - индекс начала максимальной последовательности)...
3) затем начинаешь искать следующую макс. последовательность. Естественно, что первые max элементов в расчет уже приниматься не должны, они уже стоят на мечтах, поэтому начинаешь с max+1...
Продолжать до тех пор, пока общее число перемещенных на втором этапе элементов не сравняется с длиной исходного массива...
Код не привожу, ибо "Теория"
klem4, не то...
Надо вывести не просто по алфавиту, а по частоте фамилии...