Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Лексикографическая сортировка.Асм

316
29 мая 2009 года
Alm3n
889 / / 29.05.2009
Задание:Разработать программу, которая вводит с клавиатуры несколько строк (конец ввода пустая строка) и сортирует их в лексикографическом порядке.
Написал для строк фиксированной длины.Теперь надо изменить что бы можно было сравнивать строки разной длины.Идея пока только одна:это после чтения строки в буффер ,в отдельный массив записывать адрес смещения по которому в будущем будет находяться строкаи и в соседнем байте длина слова,при сортировки менять местами не сами слова а всего лишь адреса их смещений в массиве.потом при выводе, последовательно из массива смещений считывать в dx само смещение и выводить слово.Является ли этот алгоритм оптимальным?Если да,то в случае строк разной длинны по длине какой троки сравнивать?Не будет ли более короткое слово всегда стоять первее более длинного?иначе,что еще можно придумать?
Сейчас же при сравнении,в случае надобности,слово копируются из di в si с помощъю repe movsb и потом 9ой функцией весь массив строк выводятся на экран.
Если есть к примеру строка "aaa,aac,aaacde",то как она будет выглядеть после сортировки?
14
29 мая 2009 года
Phodopus
3.3K / / 19.06.2008
1. Да. Алгоритм оптимален
2. Естественно по длине меньшей строки (а как можно сравнивать то чего нет)
3. Короткое слово всегда стоит первее длинного. Естественно в случае когда короткое слово является началом более длинного. Это так. Можно в ворде попробовать, в проводнике по именам файлов (при обычной сортировке)
4. А больше ничего придумывать не нужно
5. (1,3,2)
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог