Форум: "Прочее";
Текущий архив: 2009.08.16;
Скачать: [xml.tar.bz2];
ВнизЛексикографическая сортировка?! Найти похожие ветки
← →
DillerXX © (2009-06-15 00:23) [0]Создаём файлы/папки в пустой папке, имена: 20, 333, 4, aaa, ab. И о чудо, сортировке по имени, порядок будет такой: 4, 20, 333, aaa, ab. Т.е. не лексикографически, или точнее с невыполняющимся правилом лексикографичности для цифр. Только что заметил, вот. Всегда считал что Total Commander и Explorer цифры сотируются с тем же принципом что и буквы.
← →
Zeqfreed © (2009-06-15 00:28) [1]А как же сериалы тогда смотреть? А так серии всегда по-порядку идут.
← →
Andy BitOff © (2009-06-15 00:30) [2]Total Commander так сортирует с версии, помоему 6 и опция есть в настройках как сортировать.
Винда тоже не так давно начала так сортировать.
← →
oldman © (2009-06-15 00:34) [3]
> правилом лексикографичности для цифр
А он их считает буквами
← →
Styx (2009-06-15 00:39) [4]
> А он их считает буквами
Как раз нет, начиная с Vistы, кажись.
← →
DillerXX © (2009-06-15 00:45) [5]В ХР тоже "неправильная" сортировка. Я не понял про серии... Серии обычно нумерую 01, 02..
← →
oldman © (2009-06-15 00:54) [6]
> Серии обычно нумерую 01, 02
Ессно, если имена одной длины и сортирует правильно.
> Создаём файлы/папки в пустой папке, имена: 20, 333, 4, aaa,
> ab. И о чудо, сортировке по имени, порядок будет такой:
> 4, 20, 333, aaa, ab.
А попробуй 020, 333, 004, ааа, 0ab
:)))
← →
palva © (2009-06-15 01:03) [7]Хорошая сортировка встроена в PHP. natsort называется. Она сортирует строки, но выделяет внутри строки последовательности цифр. В результате каждая строка распадается на поля строкового и числового типов, которые чередуются по типу. Строковые поля сортируются лексикографичски, числовые по величине. Общая сортировка ведется по старшинству полей слева направо. Получается как-то так:
file4.txt
file33.txt
file22a2.txt
file22a11.txt
← →
Palladin © (2009-06-15 08:47) [8]Удалено модератором
← →
Sha © (2009-06-15 09:50) [9]> palva © (15.06.09 01:03) [7]
интересно, что получается после сортировки такого массива
abcd
ab00e
ab0e
ab7e
ab000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000007e
ab007d
ab007e
ab007f
ab000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000007e
ab7e
ab100000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000007e
ab100000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000007e
ab00e
← →
KSergey © (2009-06-15 12:17) [10]> Andy BitOff © (15.06.09 00:30) [2]
> Винда тоже не так давно начала так сортировать.
Так - это как?
ТС, не понятно о чем изумление, всегда так было, это ж буквы, а не цифры.
← →
Mystic © (2009-06-15 12:33) [11]Говоря о сортировке, мне сразу вспоминается упражнение 17 из пятой главы Д. Кнута.
← →
AndreyV © (2009-06-15 12:38) [12]Я вот не понял удивления.
← →
Andy BitOff © (2009-06-15 12:56) [13]
> KSergey © (15.06.09 12:17) [10]
> Так - это как?
Так, это
1
10
2
А недавно (мне подсказывают товарищи, с висты Styx [4]) начала правильно, а это так
1
2
10
← →
clickmaker © (2009-06-15 13:07) [14]> с висты
в 2003 тоже. А функция StrCmpLogicalW появилась в ХР
← →
palva © (2009-06-15 14:27) [15]
> интересно, что получается после сортировки такого массива
У меня получилось:
Произошла ошибка в строке15: невозможно создать таблицу в базе!ab0e
ab00e
ab00e
ab000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000007e
ab000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000007e
ab007d
ab007e
ab007f
ab7e
ab7e
ab100000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000007e
ab100000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000007e
abcd
← →
palva © (2009-06-15 14:30) [16]Вроде бы форум лишний пробел в длинные строки вставил. На самом деле там один пробел.
← →
Andy BitOff © (2009-06-15 14:43) [17]У меня в ТС получилось
ab000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000007e
ab00e
ab0e
ab007d
ab007e
ab7e
ab007f
ab100000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000007e
abcd
Остальные не могут быть созданны т.к. имена файлов не могут быть одинаковые
В ХР (проводнике)
ab000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000007e
ab00e
ab0e
ab007d
ab007e
ab7e
ab007f
ab100000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000007e
abcd
← →
Andy BitOff © (2009-06-15 14:44) [18]Да, форум добавляет пробел
← →
Sha © (2009-06-15 14:53) [19]> palva © (15.06.09 14:30) [16]
> Вроде бы форум лишний пробел в длинные строки вставил. На самом деле там один пробел.
и в моем случае тоже, я имел ввиду строки без пробелов.
>Andy BitOff © (15.06.09 14:43) [17]
вроде есть нелогичность какая-то для лидирующих нулей, хотя тоже непротиворечиво получилось:
ab007e
ab07e
ab17e
ab107e
← →
Sha © (2009-06-15 14:56) [20]На мой взгляд так логичнее, если уж переть вдурь до конца
ab07e
ab007e
ab17e
ab107e
← →
Andy BitOff © (2009-06-15 14:58) [21]
> Sha © (15.06.09 14:53) [19]
Это как посмотреть. Я внутренних принципов не знаю, но если предположить, что нули значимые, то 7 тысячных меньше 7 десятых.
Отстаивать не буду.
← →
Sha © (2009-06-15 15:00) [22]ну тогда 107 тысячных меньше 17 сотых
← →
Andy BitOff © (2009-06-15 15:01) [23]
> Sha © (15.06.09 14:56) [20]
Так логичнее как раз при лексикографической сортировке, т.к. ab07e меньше ab007e
← →
Andy BitOff © (2009-06-15 15:02) [24]
> Sha © (15.06.09 15:00) [22]
Я же говорю, отстаивать не буду ;)
← →
Sha © (2009-06-15 15:05) [25]> palva © (15.06.09 14:27) [15]
> ab007d
> ab007e
> ab007f
> ab7e
> ab7e
а это точно ошибка в ПХП, по идее надо
ab007d
ab007e
ab7e
ab7e
ab007f
или
ab007d
ab7e
ab7e
ab007e
ab007f
← →
Andy BitOff © (2009-06-15 15:06) [26]
> Sha © (15.06.09 15:00) [22]
> ну тогда 107 тысячных меньше 17 сотых
Может он умный и видит, что здесь нет первых нулей и оперирует уже как целыми, а в случае с нулями, добавляет 0 целых
← →
Sha © (2009-06-15 15:11) [27]Поэтому и возникает ощущение неуютности, неизвестно, че оно там себе думает, и кто из нас умнее, я или железка
← →
palva © (2009-06-15 16:24) [28]Там есть ссылка на статью http://sourcefrog.net/projects/natsort/ в которой говорится:
Leading zeros are not ignored, which tends to give more reasonable results on decimal fractions.
1.001 < 1.002 < 1.010 < 1.02 < 1.1 < 1.3
Как бы звучит логично, но если вместо 1.1 взять 1.11 то php сортирует неправильно, даже не смотря на то, что точка стоит явно.
a1.001
a1.002
a1.010
a1.02
a1.3
a1.11
Если букву a убрать, то наверно будет правильно, но это уже потому, что php сохранит такую строку в числовом виде, как плавающее число.
← →
Sha © (2009-06-15 16:40) [29]> palva © (15.06.09 16:24) [28]
Тут они с MS разошлись, у каждого своя нативность.
А мне моя нативность [20] нативнее.
Страницы: 1 вся ветка
Форум: "Прочее";
Текущий архив: 2009.08.16;
Скачать: [xml.tar.bz2];
Память: 0.52 MB
Время: 0.008 c