"Информатика", Рудченко Т.А., Семёнов А.Л. / Под ред. Семёнова А.Л.
Словарный порядок — способ располагать слова и строки так, как в словаре: сначала сравнивают первые символы, затем следующие, если предыдущие совпали. Такой порядок нужен для сортировки списков, поиска слов и обработки текста в программах. Решающее значение имеет первое различие, а дефис и апостроф нельзя бездумно пропускать: каждый специальный знак сравнивают по установленному правилу.
Текст подготовлен нейронной сетью по теме параграфа и не заменяет учебник — важные факты и формулировки сверяйте с ним.
Словарный порядок — правило расположения слов или строк, при котором сначала сравнивают первые символы, затем следующие при совпадении предыдущих. Он нужен, чтобы однозначно сортировать слова в списках и быстро находить нужный элемент.
Лексикографическое сравнение — последовательное сравнение символов двух строк до первого различия или до окончания одной из них. Такое сравнение похоже на порядок слов в словаре, но применяется к любым строкам.
Дефис — специальный символ, который может входить в состав слова и учитывается по установленному правилу при сравнении строк. Поэтому вариант с дефисом нельзя рассматривать просто как слово без этого знака.
Апостроф — специальный знак внутри слова, для которого при словарной сортировке также определяется особое место или порядок учёта. Его нужно распознавать отдельно, поскольку он не равен кавычке или любому похожему символу.
Сравнение выполняют слева направо, потому что начало строки задаёт её положение среди строк с тем же началом. Пока символы совпадают, они не дают ответа, поэтому переходят к следующей позиции. Как только найдено первое различие, дальнейшие символы уже не влияют на результат.
Порядок букв берут из алфавита, а компьютер может использовать таблицу символов. Поэтому сравниваются не внешний вид знаков, а их значения и место в принятом порядке. Если правило сортировки задаёт отдельные места для дефиса и апострофа, программа должна учитывать их так же, как буквы на соответствующем шаге.
Если все символы одной строки совпали с началом другой, сравнение буквами закончить нельзя: одна строка просто завершилась раньше. Обычно короткую строку считают предшествующей более длинной, потому что сначала идёт полное слово, а затем его продолжение. Например, «мир» обычно располагается перед «мирный».
Дефис сравнивают в той позиции, где он встретился, а не переносят в конец слова и не удаляют заранее. Если до него начальные части одинаковы, результат зависит от установленного места дефиса среди остальных символов. Поэтому перед сортировкой списка нужно знать конкретное правило для этого знака.
Апостроф также занимает свою позицию в строке и может изменить порядок двух почти одинаковых слов. Прямой апостроф, типографский апостроф и кавычка могут быть разными символами, хотя выглядят похоже. Надёжная проверка состоит в том, чтобы определить код или вид знака и сравнивать именно его по правилам задачи.
| Ситуация | Что сравнивают | Результат сравнения | Пример |
|---|---|---|---|
| Первые символы различаются | Первые символы по алфавиту или таблице символов | Раньше стоит строка с меньшим символом | «дом» раньше «дым»: о раньше ы |
| Первые символы совпадают | Следующую пару символов | Сравнение продолжают слева направо | «лук» и «лак»: сравнивают у и а после «л» |
| Одна строка является началом другой | Окончание короткой строки | Обычно раньше стоит короткая строка | «мир» раньше «мирный» |
| В строках встречается дефис | Дефис в своей позиции | Применяют специальное правило для дефиса | «когда-то» сравнивают с учётом «-» |
| В строках встречается апостроф | Апостроф в своей позиции | Применяют специальное правило для апострофа | «ко’ала» сравнивают с учётом «’» |
| Сравнивается список строк целиком | Каждую соседнюю пару после сортировки | Получают единый упорядоченный список | Проверяют «а», «аб», «ба» слева направо |
Таблица помогает выбрать действие для конкретной ситуации. Сначала найдите первую различающуюся позицию, а затем обратитесь к нужной строке таблицы. Для специального знака заранее уточните его место в принятом порядке.
Определим, какая строка раньше в словарном порядке: «дом» или «дым». Нужно сравнивать символы только до первого различия. Буквы «д» и «д» совпадают, поэтому ответ дадут вторые буквы.
Ответ: раньше стоит «дом».
Расположим слова «когда», «когда-то», «кондитер», «ко’ала», учитывая специальные знаки как значимые символы. Воспользуемся правилом, по которому знак сравнивают в своей позиции, а специальный знак в данном порядке идёт перед буквами. Это позволяет не смешивать сравнение общей части и сравнение знака.
Ответ: «когда», «когда-то», «ко’ала», «кондитер». Если в конкретной программе задан другой порядок знаков, результат для строк со специальными символами нужно проверить по её правилу.
Пусть требуется отсортировать список «мирный», «мир», «ко’ала», «когда-то», «кондитер». Нельзя расставлять его по длине или внешнему виду: для каждой пары действует один алгоритм. После сортировки полезно проверить каждую соседнюю пару, потому что ошибка обычно обнаруживается на первом нарушенном сравнении.
Ответ: «ко’ала», «когда-то», «кондитер», «мир», «мирный» при указанном порядке апострофа. Проверка соседних пар подтверждает: в каждой паре найдено первое различие или применено правило для начала строки.
Сравнивать слова по длине. Так делают, потому что длину легко заметить, но она важна только после совпадения всей короткой строки. Проверяйте сначала символы слева направо, а длину учитывайте лишь при совпадении начальных частей.
Продолжать сравнение после первого различия. Ошибка возникает, когда пытаются учесть всё слово целиком. Остановитесь на первой различающейся позиции и запишите, какой символ раньше.
Забывать о начале длинной строки. Иногда одинаковое начало принимают за полное совпадение. Проверьте, закончилась ли одна строка: обычно завершившаяся короткая строка идёт первой.
Игнорировать дефис и апостроф. Их пропускают из-за малого размера или сходства с другими знаками. Уточните вид символа и его место в правиле, затем сравнивайте его в обычной позиции.
До этой темы нужны алфавитный порядок, понятия символа и строки, а также правила сравнения символов. Словарная сортировка используется при упорядочивании списков, поиске элементов, работе со строками и организации данных в таблицах. Позже тот же принцип пригодится в алгоритмах поиска, сортировки и обработки текстовой информации.
Почему слово с меньшей длиной не всегда стоит раньше?
Длина сама по себе не определяет словарный порядок. Сначала сравнивают символы слева направо, и более длинное слово может опередить короткое, если первое различие указывает на него.
Что делать, если первые несколько букв двух слов совпадают?
Нужно перейти к следующему символу и продолжать сравнение слева направо. Порядок определяется первой позицией, где символы различаются.
Как сравнивать слово и его вариант с дефисом?
Сначала сравнивают общую часть. Если встречается дефис, его учитывают как отдельный значимый символ по правилу сортировки, а не автоматически удаляют.
Нужно ли учитывать апостроф при сортировке?
Да, если апостроф входит в строку, он участвует в сравнении. Нужно отличать его от кавычек и похожих знаков и применять установленное для него место.
Почему порядок в компьютерной сортировке может отличаться от привычного словарного порядка?
Компьютер сравнивает символы по заданной таблице символов или специальному алгоритму. В ней порядок букв, регистра, дефиса и апострофа может отличаться от правил обычного словаря.
Словарный порядок. Дефис и апостроф