LINUX.ORG.RU

Как понять «сортируется перед/после ... лексикографически»

 , ,


0

1

Прочитал статью на русском, из которой сделал вывод, что < и > сравнивают длину строки по количеству символов. Но потом попробовал разные примеры, и оказалось что тут другое. В английском руководстве такое определение.

string1 < string2

    True if string1 sorts before string2 lexicographically.
string1 > string2

    True if string1 sorts after string2 lexicographically.

Т.е. возвращает тру, если 1я строка сортируется перед/после 2й строки лексикографически- дословный перевод.

Что-то я не до конца понял «сортируется перед/после». Почему строка «ссссс» считается длиннее «ccccb», но короче, чем «cccce». Ну интуитивно логику я понял (алфавит по порядку), но ведь строки то по сути равны. В обоих по 5 символов.

Вот мы числа сравниваем: 10 > 2 - это очевидно, даже сомнений не возникает. А тут мы сравнили 2 строки по 5 символов, и выясняется, что одна из них почему-то больше, по правилам какого-то алфавита... Допустим так, я не против. Но кому вообще (и зачем) придет в голову мысль выяснять таким способом «длину строки». В чем тут практический смысл? Где применяется?

Ответ на: комментарий от Crocodoom

Да, как-то сразу и не вспомнил, нужная вещь. Да и сортировка фильмов на сайтах сразу на ум приходит. Получается это одна из самых полезных вещей в программировании, сортировка строк по алфавиту.

shkolnik_2019
() автор топика

Грубо говоря,
for i=0 to n - до n включительно.
while i=n - n в цикл не включается.
Так понятнее?

Ещё раз по-русски.
Повторять для i до n, включитиельно.
Второй вариант, повторять, пока i не станет равным n, дальше не надо.

Хотя в последнем случае я бы поставил не «=», а «>=», просто на всякий случай. Ибо бесконечный цикл - это иногда даже не проблема, а засада.

cadaber ★★
()
Последнее исправление: cadaber (всего исправлений: 4)
Ответ на: комментарий от shkolnik_2019

Получается это одна из самых полезных вещей в программировании, сортировка строк по алфавиту.

Нет.

Zhbert ★★★★★
()

Cравнение количества символов строк != лексикографическому сравнению. Вот и всё. Тебе надо:

[[ ${#str1} -eq ${#str2} ]]

gnu_linux
()
Ответ на: комментарий от gnu_linux

Угумс. Я тоже bash и perl в курсе. Но это немножко не то. Тут чувак пытается сравнивать строковые переменные, что в принципе некорректно. Не знаю, на каком языке чел пишет, но в Perl и даже JavaScript для этого желательно использовать оператор «eq». Ну, типо, «str1 not eq str2» но уж никак математические выражения.

Я дуиал, про циклы до и после спросил... Извиняюсь, дурак, простите уж.

cadaber ★★
()
Последнее исправление: cadaber (всего исправлений: 4)
Ответ на: комментарий от shkolnik_2019

Если со вторым понятней, то теперь непонятно зачем считать символы строк? Где это может пригодиться.

Ну а как-же, «Ваш пароль слишком короткий для регистрации»? Гы-гы..

cadaber ★★
()
Ответ на: комментарий от shkolnik_2019

Я ж говорю, JS чел мается, не иначе. =)

Ну, ёлы-палы, опубликовал-бы уже полностью свою функцию. Да-да, я к тебе, ТС, обращаюсь. Можешь быть на 100% уверен, что никто твою «интеллектуальную собственность» не украдёт. Скорее всего, она была изобретена уже давно, задолго до того, как ты родился. Поэтому не переживай даже, новых алгоритмов сортировки тебе не придумать. Ну, разве что, если ты не крутой матетематик и разбираешься в теории множеств.

cadaber ★★
()
Последнее исправление: cadaber (всего исправлений: 1)
Ответ на: комментарий от gedisdone

ак не математические выражения? В JS самые что ни на есть математические используются.

Это какие, интересно? + - Массивы, в том числе ассоциативные - заимствованы из perl. Синтаксис - из C++. Указатели - тоже, хотя какие в вебе указатели... нету их. Практически линейное программирование, как на Паскале.

cadaber ★★
()
Ответ на: комментарий от cadaber

Не понимаю о чем вы. Я за СПО, если бы у меня было чем поделиться, я бы выложил. А так, гордиться особо нечем, просто теоретический вопрос. На Java-script не писал еще ничего.

shkolnik_2019
() автор топика
Ответ на: комментарий от shkolnik_2019

Не понимаю о чем вы. Я за СПО, если бы у меня было чем поделиться, я бы выложил. А так, гордиться особо нечем, просто теоретический вопрос. На Java-script не писал еще ничего.

Я вобщем-то тоже за СПО, но более пассивно. Видишь-ли, когда был моложе, я гораздо раньше понял, что за Линуксом, в конечном итоге - будущее. Но наткнулся на просто непробиваемую стену из толстых тёток-бухгалтеров, которые хрен-бы напрочь отказались от привычного ворда с эксцелем. Да они бы убили меня запросто, просто задавив своими килограммами.

Сижу, жду. Пока здравый смысл победит. Или на уровне правительства введут линукс... Ну-ну, бля. Alt-Linux для школ уже был, Star-Linux для офисов уже был. Чесслово, ни одного дистрибутива не видел. Хотя денег было угрохано до ёбаной матери.

Да за такое бабло, я бы лично Linux from scratch за пару месяцев бы рабочий собрал... И вовсе не BoljenOS, а с ядра.

cadaber ★★
()
Последнее исправление: cadaber (всего исправлений: 1)

словарный порядок - ну ты пнл

qulinxao3
()
Ответ на: комментарий от cadaber

BoljenOS собрал бы , но он был бы шаткий на каждый пук бы просто падал , собрал бы он ага.

anonymous
()
Ответ на: комментарий от cadaber

Вот и я понимаю, что в школах выгодно проприетарное ПО пропихивать, ведь тогда всем баблишко перепадет. Общество потребления воспитало в людях примитивное мышление, согласно которому «платное = качественное», а «бесплатное = говно». Но пока у руля страны и образовательной системы находятся братки и воротилы из 90х, ничего не изменится. А я буду и дальше объяснять друзьям и родственникам, почему СПО лучше. Кстати, многие благодаря мне уже перешли на Ubuntu, и не жалуются на нехватку привычных программ.

shkolnik_2019
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.