| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C++ Builder > Сортировка строк в ListBox |
| Автор: GQU 23.6.2012, 01:37 | ||
Не пойму почему не работает сортировка строк по длине Алгоритм примерно такой: 1) Сравниваем все строки с первой 2)Если есть строки короче чем первая, меняем местами первую и которую короче первой 3)На данном этапе на первом месте должна стоять самая короткая строка 4)Теперь все повторяется, только сравниваем все строки со второй и меняем вторую и которая короче второй итд 5)Теперь все повторяется, только сравниваем все строки с третьей до предпоследней |
| Автор: Bodro 23.6.2012, 17:34 | ||||||||
| Добрый день! Во-первых, перепишите свои циклы - вынесите за пределы цикла вычисления:
Это совет по оптимизации. Так, теперь перейдём к вашей проблеме. Вариант №1 - не очень удачный, содержит 2 наших цикла и ещё цикл внутри STL.
Вместо предиката greather можете использовать предикат less или написать свой (если не знаете, то читайте как пишутся функторы). Вариант №2 - сортировка методом пузырька.
И последний вариант - выставить в инспекторе объектов свойство Sorted у ListBox в true. Вот если вас интересует сравнение конкретно по длине, то опять таки, воспользуйтесь сортировкой пузырьком, только сравнивайте не строки, а их длину.
|