Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.04.29;
Скачать: CL | DM;

Вниз

Правила сортировки строк   Найти похожие ветки 

 
Ega23 ©   (2007-04-05 17:04) [0]

Поделитесь полной инфой (или в литературу ткните).
Т.е. при сравнении строк что в каком порядке берётся?
Например, что больше, "1" или "01"?
короче, правила нужны...
З.Ы. сравнение не на равенство, а именно на больше-меньше.


 
TUser ©   (2007-04-05 17:14) [1]

В разных программах разные правила.


 
euru ©   (2007-04-05 17:18) [2]


> Например, что больше, "1" или "01"?
"1" > "01"
Делается посимвольное сравнение до первых несовпавших символов. Большей считается та строка, у которой первый несовпавший символ больше соответствующего символа из второй строки.
Если меньшая по длине строка полностью совпадает с началом большей строки, то она меньше второй.


 
Сергей М. ©   (2007-04-05 17:18) [3]


> на больше-меньше


Сравнению на "больше-меньше", очевидно, могут подлежать только коды сравниваемых символов. А коды эти зависят от конкретных таблиц кодировки.

Над этим "низким уровнем" сравнения может стоять еще один, чуть более высокий уровень - уровень таблиц, определяющих спецправила сортировки. В СУБД они широко известны как COLLATION SEQUENCE.


 
euru ©   (2007-04-05 17:20) [4]


> euru ©   (05.04.07 17:18) [2]
Это сравнение на точное совпадение символов.
Ещё может быть вариант без учёта регистра символов.


 
wal ©   (2007-04-05 17:25) [5]

Обычно так:
Каждый символ имеет некоторое значение (по алфавиту или по таблице символов), что позволяет сравнивать символы.
Каждое место в строке имеет "вес", но, в отличии от чисел, где некоторое место в записи имеет вес=0, налево увеличивается, направо уменьшается, в строках максимальный вес имеет первый символ независимо от длины записи, направо, соответственно вес уменьшается, а слева ничего нет.
Далее как обычно, сравнивают символы с максимальными весам, если совпадают, то следующие, если одна строка является началом другой, то более длинную считают большей.

Следовательно "01"<"1", если "0"<"1".

Но может быть все и не так, а как приснится разработчику.


 
Ega23 ©   (2007-04-05 17:26) [6]

Всё верно говорите. Но есть подозрение, что тут ещё как-то длина строки учитывается... Вот я и хочу выяснить.
Хотя если для разных программ - разное сравнение, то тут - увы...


 
TUser ©   (2007-04-05 17:29) [7]

Я даже знаю пример программы, которая сортирует не так, как это делает Проводник - 9 в этой софтине идет сначала, а 10 - уже потом. Если стоит задача сымитировать сортировку в какой-либо программе, то надо выяснять способ, который использован именно там, и при именно данных настройках.


 
Паша 1   (2007-04-05 17:34) [8]


> ещё как-то длина строки учитывается

не должна, по-идее. потому "01"<"1"
этого можно избежать, если в процессе сортировки выравнивать строки по правой стороне, добавив пробелами, к примеру. тогда "01">" 1"


 
Desdechado ©   (2007-04-05 18:04) [9]

В последнее время все чаще встречаю сортировку, в которой игнорируются определенные символы (например, знак подчеркивания). Недавно это появилось в винде (даже флаг какой-то можно выставить, запамятовал за ненадобностью). Видел также в Оракле, там тоже регулируется опциями.


 
Anatoly Podgoretsky ©   (2007-04-05 20:47) [10]

> Ega23  (05.04.2007 17:04:00)  [0]

Правило простое - лексикографическое сравнение слева направо, перед сравнением строка может подвергать дополнительной обработки (как правило базы данных, например MS SQL), но само сравнение лексикографическое.


 
Petr V.Abramov   (2007-04-05 21:41) [11]

> Правило простое - лексикографическое сравнение слева направо
или сам решай, у какой строки больше



Страницы: 1 вся ветка

Текущий архив: 2007.04.29;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.064 c
15-1171999140
Иксик
2007-02-20 22:19
2007.04.29
Дорогие друзья я снова с вами! :):):)


15-1174495968
SkySpeed
2007-03-21 19:52
2007.04.29
Как исправить ошибку с повреждённым файлом реестра?..............


10-1132074794
LORN
2005-11-15 20:13
2007.04.29
Excel->StringGrid


2-1175797817
..::KraN::..
2007-04-05 22:30
2007.04.29
CD-ROM


1-1172849311
Ш-К
2007-03-02 18:28
2007.04.29
Хранить интерфейсы в TStrings