| Автор |
Сообщение |
![[Post New]](/forum/templates/default/images/icon_minipost_new.gif) 07/10/2008 13:48:41
|
mozers™
Новичок
Зарегистрирован: 08/05/2008 16:18:54
Сообщений: 27
Оффлайн
|
Никак не могу понять почему таблица не сортируется как надо.
Делаю так:Получается совсем не то, что надо получить:
|
|
|
 |
![[Post New]](/forum/templates/default/images/icon_minipost_new.gif) 07/10/2008 14:38:46
|
XNut
ГУРУ
![[Avatar]](/forum/images/avatar/7f39f8317fbdb1988ef4c628eba02591.jpg)
Зарегистрирован: 15/04/2008 12:12:47
Сообщений: 106
От: Россия, Липецк
Оффлайн
|
здесь нужен или составной ключ, например, или два прохода сортировки
|
|
|
 |
![[Post New]](/forum/templates/default/images/icon_minipost_new.gif) 07/10/2008 14:52:57
|
mozers™
Новичок
Зарегистрирован: 08/05/2008 16:18:54
Сообщений: 27
Оффлайн
|
Составной ключ мне не подходит (слишком непредсказуема разрядность чисел - тут сильно упрощенный пример).
В два прохода тоже почему то фигню выдает
|
|
|
 |
![[Post New]](/forum/templates/default/images/icon_minipost_new.gif) 07/10/2008 15:14:43
|
smz
ГУРУ
Зарегистрирован: 14/03/2008 13:23:00
Сообщений: 249
Оффлайн
|
Вы забыли написать, а что же вы хотите получить.
|
|
|
 |
![[Post New]](/forum/templates/default/images/icon_minipost_new.gif) 07/10/2008 15:22:56
|
Strijar
ГУРУ
Зарегистрирован: 08/02/2008 21:28:09
Сообщений: 230
От: СПб
Оффлайн
|
Это сообщение было редактировано 1 раз. Последнее обновление произошло в 07/10/2008 15:23:47
|
Лучше быть белым волком, чем серым человеком. |
|
|
 |
![[Post New]](/forum/templates/default/images/icon_minipost_new.gif) 07/10/2008 15:26:42
|
Strijar
ГУРУ
Зарегистрирован: 08/02/2008 21:28:09
Сообщений: 230
От: СПб
Оффлайн
|
smz wrote:Вы забыли написать, а что же вы хотите получить.
Табличка после кода - желаемое. Я тоже не сразу понял
|
Лучше быть белым волком, чем серым человеком. |
|
|
 |
![[Post New]](/forum/templates/default/images/icon_minipost_new.gif) 07/10/2008 15:35:30
|
smz
ГУРУ
Зарегистрирован: 14/03/2008 13:23:00
Сообщений: 249
Оффлайн
|
А, до меня дошло. (Исходное сообщение было несколько двусмысленно, однако). Можно так:
|
|
|
 |
![[Post New]](/forum/templates/default/images/icon_minipost_new.gif) 07/10/2008 15:48:26
|
Strijar
ГУРУ
Зарегистрирован: 08/02/2008 21:28:09
Сообщений: 230
От: СПб
Оффлайн
|
О, точно - красота!
|
Лучше быть белым волком, чем серым человеком. |
|
|
 |
![[Post New]](/forum/templates/default/images/icon_minipost_new.gif) 07/10/2008 15:56:57
|
mozers™
Новичок
Зарегистрирован: 08/05/2008 16:18:54
Сообщений: 27
Оффлайн
|
2smz
Я написал как раз не то что получаю, а то что хочу получить
2Strijar
СПАСИБО! То что надо. Работает отлично!
|
|
|
 |
![[Post New]](/forum/templates/default/images/icon_minipost_new.gif) 07/10/2008 16:00:25
|
mozers™
Новичок
Зарегистрирован: 08/05/2008 16:18:54
Сообщений: 27
Оффлайн
|
2smz
Класс!
[s]Ребята, я не успеваю за стремительным полетом вашей мысли [/s]
|
|
|
 |
![[Post New]](/forum/templates/default/images/icon_minipost_new.gif) 07/10/2008 17:02:25
|
mozers™
Новичок
Зарегистрирован: 08/05/2008 16:18:54
Сообщений: 27
Оффлайн
|
Всетаки никак не просеку логику функции сравнения :-/
Вот так, как я полагал, вообще ничего не должно сортироваться:
Однако - элементы таблицы все равно сортируются, правда в каком то диком порядке :-/
Если false заменить на true то вообще ошибка возникает.
10 раз справку по sort перечитал - бесполезно :-/
|
|
|
 |
![[Post New]](/forum/templates/default/images/icon_minipost_new.gif) 07/10/2008 17:10:30
|
Strijar
ГУРУ
Зарегистрирован: 08/02/2008 21:28:09
Сообщений: 230
От: СПб
Оффлайн
|
mozers™ wrote:Всетаки никак не просеку логику функции сравнения :-/
Там QuickSort
|
Лучше быть белым волком, чем серым человеком. |
|
|
 |
![[Post New]](/forum/templates/default/images/icon_minipost_new.gif) 07/10/2008 17:47:43
|
smz
ГУРУ
Зарегистрирован: 14/03/2008 13:23:00
Сообщений: 249
Оффлайн
|
mozers™ wrote:Всетаки никак не просеку логику функции сравнения :-/
Вот так, как я полагал, вообще ничего не должно сортироваться:
Однако - элементы таблицы все равно сортируются, правда в каком то диком порядке :-/
Если false заменить на true то вообще ошибка возникает.
10 раз справку по sort перечитал - бесполезно :-/
Отвлекаясь от конкретного алгоритма сортировки, принцип такой - функция сравнения должна отвечать на вопрос: "1-й элемент должен быть впереди 2-го?". Ф-ция сравнения, всегда возвращающая false - корректна (например, все элементы таблицы по её логике равны - демократия), а вот ф-ция, всегда возвращающая true - некорректна, так как она один раз требует поставить A впереди Б, а второй раз - наоборот.
|
|
|
 |
![[Post New]](/forum/templates/default/images/icon_minipost_new.gif) 07/10/2008 20:57:18
|
mozers™
Новичок
Зарегистрирован: 08/05/2008 16:18:54
Сообщений: 27
Оффлайн
|
СПАСИБО. Все вроде понял.
Если понял правильно, то работу функции sort можно описать таким кодом:
|
|
|
 |
![[Post New]](/forum/templates/default/images/icon_minipost_new.gif) 07/10/2008 22:09:24
|
smz
ГУРУ
Зарегистрирован: 14/03/2008 13:23:00
Сообщений: 249
Оффлайн
|
Вы применили так наз. пузырьковую сортировку. Обычно она реализуется двойным вложенным циклом, ваш вариант в наихудшем случае будет раза в 2 медленнее (хотя в наилучшем будет гораздо быстрее).
Функция comp должна быть вынесена из ф-ции SortTable и передаваться как параметр. Кроме того, её можно упростить:
Менять элементы местами в Lua можно без временных переменных:
Это сообщение было редактировано 2 раз. Последнее обновление произошло в 07/10/2008 22:31:09
|
|
|
 |
|
|