Я являюсь грейдером для курса статистики и имею серию заданий домашней работы в бумаге, предоставленных мне в случайном порядке. Часть моей работы - это их алфавит. Я использовал метод, похожий на quick-sort, но другие грейдеры использовали разные методы. Я хочу эффективный метод сортировки с обоснованием, когда у меня есть "большое" количество экзаменов с предоставленным обоснованием. Вот некоторые особенности, которые я использовал:
- У меня есть список, который содержит алфавитный список всех имен, которые я должен видеть.
- Я не хочу, чтобы имена были более в алфавитном порядке, чем только первая буква. Например, я в порядке, если "Смит, Джон" предшествует "Salk, Jonas".
- Мне никогда не придется сортировать более 300 объектов.
Мой метод до сих пор заключался в том, чтобы найти медианную последнюю букву (то есть: если есть 60 документов, выберите фамилию, соответствующую 30-му человеку) в списке классов, рассматривайте ее как точку опоры и поместите все буквы выше медианного в одной куче и все буквы внизу в другой. Если письмо совпадает с медианным, я помещаю его в медианную кучу. Теперь я делаю то же самое на вышеупомянутых/ниже-медианных сваях. Когда свай достаточно мал, чтобы в стек было всего три или четыре буквы, я делаю по одному стеку для каждой буквы, а затем складываю стеки в мастер-стек в алфавитном порядке.
Существуют ли какие-либо алгоритмы, специально предназначенные для алфавита, или что-то более эффективное в среднем, чем мой метод? Один из методов, который, казалось, все в порядке, заключался в том, чтобы сделать стек для каждой буквы (26 свай, в худшем случае), но это занимает столько места, что это невозможно для одного стола.