сортировка таблицы

Страницы: 1
RSS
сортировка таблицы, ключ и значения - натуральные числа
 
Добрый день

Пытался найти максимумы-минимумы в таблице.
Код
        table.sort(TBsorted)

        for key, val in pairs(TBsorted) do
            lst = lst..key.." - "..val.."\n"
        end
Выводит подобное:
Цитата
64287 - 7
64282 - 1
64284 - 27
64286 - 112
64281 - 16
64280 - 1
64285 - 10
64278 - 2

Использование функции в table.sort тоже никак не помогает почему-то.
Вопросы:
1. почему не сортирует вообще никак, ни по ключу, ни по значению, хотя то и другое - натуральные числа?
2. как отсортировать значения, сохраняя ассоциации с ключами?
3. известен ли лучший способ поиска максимумов-минимумов без сортировки?

Максимумов-минимумов может быть несколько. В приведенном конкретном случае, если бы ключи были отсортированы, хотелось бы найти волны макс.-мин.-макс.-мин. таким образом, чтобы максимумы и минимумы стояли друг от друга не ближе какого-то диапазона. При этом в абсолютных значениях максимумы могут не быть самыми большими числами, а минимумы - самыми маленькими
Цитата
64278 - 2
64279 - 0 min
64280 - 1
64281 - 16 max
64282 - 1
64283 - 0 min
64284 - 27            - не max, хотя и больше 64281 - 16, т.к. слишком близко к min
64285 - 10            - не min, слишком близко к max
64286 - 112 max
64287 - 7
 
Цитата
sergei написал:

1. почему не сортирует вообще никак, ни по ключу, ни по значению, хотя то и другое - натуральные числа?
Чтобы table.sort работала, нужно чтобы ключи были в терминологии Lua "массивом" (array), то есть являлись:
1. Положительными целыми числами.
2. Начинались с 1.
3. Не имели пропусков (максимальный индекс равен общему количеству элементов).

Что касается своих правил сортировки, table.sort предоставляет возможность задать вторым аргументом функцию, где эти собственные правила можно и реализовать. Подробности в документации на Lua.
 
Цитата
SDL написал:
Цитата
sergei написал:

1. почему не сортирует вообще никак, ни по ключу, ни по значению, хотя то и другое - натуральные числа?
Чтобы table.sort работала, нужно чтобы ключи были в терминологии Lua "массивом" (array), то есть являлись:
1. Положительными целыми числами.
2. Начинались с 1.
3. Не имели пропусков (максимальный индекс равен общему количеству элементов).

Что касается своих правил сортировки, table.sort предоставляет возможность задать вторым аргументом функцию, где эти собственные правила можно и реализовать. Подробности в документации на Lua.
Спасибо!

#2 & #3 у меня не выполняются.
Страницы: 1
Читают тему
Наверх