Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 2007.04.29;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.47 MB
Время: 0.046 c
1-1172920617
Рафик с рынка
2007-03-03 14:16
2007.04.29
Вопрос о джойстике


2-1176182269
zhurik
2007-04-10 09:17
2007.04.29
Динамический массив как параметр в процедуре ?


2-1176286850
hover
2007-04-11 14:20
2007.04.29
ListBox и кнопка


15-1175840902
homm
2007-04-06 10:28
2007.04.29
От чего завист скорость ухода системы в сячку?


2-1176037710
pound
2007-04-08 17:08
2007.04.29
В редакторе TValueListEditor в событии OnValidate проверяю





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский