2015-05-10 3 views
1

Сортировка по алфавиту, например, с sorted() в Python даст следующее: a ab aa aabСортировка по сходству, а не в алфавитном порядке

Как можно идти о достижении следующих вместо этого? a aa ab aab

В частности, существует ли традиционное слово для этого, иначе это вопрос реализации пользовательского алгоритма для этого?

+1

Вы не указали, на каком языке это, поэтому я не знаю, что такое 'sorted'. Кажется, что это не похоже на алфавитную сортировку (поскольку 'ab' до' aa'). –

+1

Как говорили другие, ваш вопрос бессмыслен. Сортировка довольно проста. Вы должны решить какой-то порядок вселенной элементов. Затем сортировка упорядочивает элементы в этом порядке. Для определения общего порядка недостаточно одной парной меры сходства. – Gene

+0

В частности и точно, что вы подразумеваете под «сортировкой по подобию»? В первом списке содержится ошибка, когда «aa» и «ab» случайно транспонированы? –

ответ

2

Это зависит, в частности, от языка программирования по вашему выбору. В, скажем, Java, вы можете использовать Collections.sort(List<T> list, Comparator<? super T> c), для которого вы передаете компаратор, который может делать whategver, который вы хотите, например, вернуть значение сравнения на основе сходства. На других языках или при реализации алгоритмов сортировки вы можете просто заменить стандартное сравнение значений для своих собственных методов.

Тем не менее, я все еще не понимаю, что вы подразумеваете под подобием. Насколько я вижу, вы хотите упорядочить строки сначала по длине, а затем по алфавиту с определенной длиной. В этом случае Comparator, который вам нужно будет передать упомянутому выше методу, необходимо будет сначала сравнить длины, а если они равны, значения двух строк.

2

Прокрутите массив и создайте новый массив ArrayList. Добавьте к массиву, используя loopString.compare(previousString);.

Убедитесь, что все строки указаны в нижнем регистре или все в верхнем регистре. Поскольку «а» доходит до «б», он будет делать то, что ты просил.

Смежные вопросы