| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: Общие вопросы > Сортировка строковых значений как чисел |
| Автор: Medved 15.9.2002, 07:26 |
| Как отсортировать строковые значения (номера домов) по возрастанию, как числовые, причем в номерах домов могут быть как знаки, так и буквы Например: 25/2, 27 А Строки сортируются следующим образом: 1 .. 11 .. 2 .. 26 и т.д. а надо так: 1 2 3 .. 11 .. 22 |
| Автор: Vit 15.9.2002, 07:33 |
| Добавь нужное количество нулей перед значением чтобы все значения были одинаковой разрядности - это отсортирует цифры, а вот с буквами я бы поступил так - сделал преобразование: 1 -> 001_ 3 -> 003_ 30 -> 030_ 11 -> 011_ 22 -> 022_ 3а -> 003a 3б -> 003б 123 ->123_ Закономерность уловили? - теперь сортировка строк любым алгоритмом отсортирует правильно, затем надо вернуть все изменения взад. |
| Автор: Song 15.9.2002, 18:13 |
| Загрузи в TStringList, там автомтическая сортировка есть. А вообще полезней самому - "пузырёк". |
| Автор: Vit 15.9.2002, 23:36 | ||
Простой конечно, но очень уж долгий... |
| Автор: Pegas 16.9.2002, 22:56 | ||
Да нет, не получиться, если загрузить в TStringList, то отсортирует по алфавиту, а мне надо, чтобы отсортировала как числа.... Так что пока единственный правильный ответ дал Vit, я его уже реализовал... |
| Автор: Song 16.9.2002, 23:18 | ||||
TStringList.CustomSort - и отсортирует как хочешь. |
| Автор: Vit 17.9.2002, 00:08 | ||
Это точно! |
| Автор: Medved 17.9.2002, 06:10 | ||
Перед Song-ом извиняюсь, попробовал, получилось.... Спасибо! |
| Автор: Vit 17.9.2002, 06:22 |
| Если не секрет, то какой алгоритм использовал для CustomSort? |
| Автор: Medved 9.11.2008, 18:52 | ||
http://www.delphikingdom.com/asp/answer.asp?IDAnswer=60997 |
| Автор: Poseidon 10.11.2008, 15:24 |
| Мдаааа. Medved, лучше поздно, чем никогда? |