OberonCore https://forum.oberoncore.ru/ |
|
Лексикографическое сравнение строк https://forum.oberoncore.ru/viewtopic.php?f=47&t=3718 |
Страница 1 из 1 |
Автор: | Иван Кузьмицкий [ Среда, 14 Декабрь, 2011 16:15 ] |
Заголовок сообщения: | Лексикографическое сравнение строк |
Это нужно для выстраивания слов в алфавитном порядке. Что-то под рукой не нашлось ничего подходящего, но перед тем как "изобрести велосипед", решил спросить у сообщества - может, кто-то уже делал подобное? |
Автор: | Пётр Кушнир [ Среда, 14 Декабрь, 2011 16:58 ] |
Заголовок сообщения: | Re: Лексикографическое сравнение строк |
Настал момент наполнить Strings содержимым, соответствующим названию upd: но не в этот раз |
Автор: | Евгений Темиргалеев [ Среда, 14 Декабрь, 2011 17:02 ] |
Заголовок сообщения: | Re: Лексикографическое сравнение строк |
a$ < b$, a$ = b$ --- это и есть лексикографическое сравнение. Самый простой вариант. Возможно эти две операции с т.з. скорости будут достаточны и можно ничего больше не писать. Для упорядочивания выгоднее использовать rel = signum(a - b). rel = -1 -> a < b rel = 0 -> a = b rel = 1 -> a > b rel можно считать для строк по аналогии, ориентируюясь на лексикографическое сравнение a<b,.... В этом случае операция "сравнения" (проход по строке) одна. Инструкция x86, генерируемая ББ для сравнения "строк", rel выдаёт, но в КП (на выском уровне) получить его нельзя. Вопрос же писать высокоуровневый цикл для вычисления rel, либо использовать две операции a$ < b$, a$ = b$, нужно решать исходя из числа операций и длины строк. |
Автор: | Иван Кузьмицкий [ Среда, 14 Декабрь, 2011 17:24 ] |
Заголовок сообщения: | Re: Лексикографическое сравнение строк |
Воистину, далеко ходить не надо! Тем более, что ББ 1.6, юникодный. Евгений, спасибо, а мне надо чаще заглядывать в сообщение о языке Одна небольшая проблема - этот оператор неправильно распознаёт букву Ё. Хотя это проблема юникода, там ё стоит в конце последовательности нижнерегистрового алфавита, а Ё - в начале последовательности верхнерегистрового алфавита. Да и не важно, слов на Ё немного, и даже если они будут не так отсортированы - ничего страшноо не случится. P.S. Замеров скорости сравнения ещё не делал. Как-нибудь на досуге померяю, ради интереса. Сейчас задачи оптимизировать просто не стоит - списки людей относительно небольшие. |
Автор: | Александр Шостак [ Среда, 14 Декабрь, 2011 17:30 ] |
Заголовок сообщения: | Re: Лексикографическое сравнение строк |
Как вариант WinApi CompareStringW. Очень много моментов учитывается, в отличие от бинарного сравнения. |
Страница 1 из 1 | Часовой пояс: UTC + 3 часа |
Powered by phpBB® Forum Software © phpBB Group https://www.phpbb.com/ |