Чет искал в гугле и не нашел конкретного моего случая либо так искал. короче примерно дано
Table={}
Table["Petia"]=2
Table["Vasia"]=1
Table["Jenia"]=2
Table["Tusha"]=9
Table["Pitarda"]=3
Table["Kruk"]=1
нужно отсортировать чтоб получилось
Table["Tusha"]=9
Table["Pitarda"]=3
Table["Jenia"]=2
Table["Petia"]=2
Table["Kruk"]=1
Table["Vasia"]=1
Не могу понять как сделать сортировку. И как нумеруются вот эти вот "Petia""Vasia" в массиве ?Случайно не по счету 0-1-2....n ? Просто суть в том чтоб потом вернуть их значения этих петей васей и сравнить с другими петями женями по счету! И узнать самого большого посчету! через if then end

Принятый ответ

У вас строки используются в качестве ключей в таблице. Такое сортировке не подлежит потому как ассоциативные массивы не гарантируют порядок элементов.
Их можно перебрать через цикл по pairs. Для поиска самого большого значения этого хватит, сортировка не нужна для этого.
Если нужна именно сортировка - нужна таблица представляющая собой обычный нумерованный массив, в ячейках которого будут лежать таблицы с именами и другими значениями - такую конструкцию можно сортировать потому как обычный массив знает порядок элементов.
`
ОЖИДАНИЕ РЕКЛАМЫ...

Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
1
24
5 лет назад
1
У вас строки используются в качестве ключей в таблице. Такое сортировке не подлежит потому как ассоциативные массивы не гарантируют порядок элементов.
Их можно перебрать через цикл по pairs. Для поиска самого большого значения этого хватит, сортировка не нужна для этого.
Если нужна именно сортировка - нужна таблица представляющая собой обычный нумерованный массив, в ячейках которого будут лежать таблицы с именами и другими значениями - такую конструкцию можно сортировать потому как обычный массив знает порядок элементов.
Принятый ответ
0
8
5 лет назад
Отредактирован Castiel
0
prog:
У вас строки используются в качестве ключей в таблице. Такое сортировке не подлежит потому как ассоциативные массивы не гарантируют порядок элементов.
Их можно перебрать через цикл по pairs. Для поиска самого большого значения этого хватит, сортировка не нужна для этого.
Если нужна именно сортировка - нужна таблица представляющая собой обычный нумерованный массив, в ячейках которого будут лежать таблицы с именами и другими значениями - такую конструкцию можно сортировать потому как обычный массив знает порядок элементов.
Бро как тогда найти самое высокое значение )))? именно через pairs! и как именно вывести самый высокий! чет пробую никак не выходит!
1
24
5 лет назад
1
Castiel, перебор ассоциативного массива через pairs выглядит так
 for key,value in pairs(t) do
В переменную key по очереди будет записан каждый ключ из таблицы t а в value - каждое значение.
А поиск самого большого значения в массиве... Гугл в помощь, это простейшая задача, одинаковая почти в любом языке.
0
8
5 лет назад
Отредактирован Castiel
0
prog:
Castiel, перебор ассоциативного массива через pairs выглядит так
 for key,value in pairs(t) do
В переменную key по очереди будет записан каждый ключ из таблицы t а в value - каждое значение.
А поиск самого большого значения в массиве... Гугл в помощь, это простейшая задача, одинаковая почти в любом языке.
А потом их сравнить можно будет по ключу типа if "Petia" then elseif "Vasia" then end ? или самое большое занести в отдельную локалку и потом сравнить ??
1
24
5 лет назад
1
Castiel, смотря чего добиться в итоге надо - все можно, от конкретной задачи зависит, а я не экстрасенс чтобы угадать. Но поиск максимального значения в массиве обычно и так использует переменную объявленную до цикла чтобы хранить это значение, или индекс этого значения или ключ или несколько переменных.
0
8
5 лет назад
Отредактирован Castiel
0
prog:
Castiel, смотря чего добиться в итоге надо - все можно, от конкретной задачи зависит, а я не экстрасенс чтобы угадать. Но поиск максимального значения в массиве обычно и так использует переменную объявленную до цикла чтобы хранить это значение, или индекс этого значения или ключ или несколько переменных.
короче я просто затупил, я ключи пронумеровал и отсортировал, суть в том, что мне нужно было узнать именно ключ самого большого числа! и потом еще раз сравнить со вторым по счету после сортировки! то есть
table[0]=3
table[1]=10
table[2]=5
table[3]=4
table[4]=1
итог:
table[1]=10
table[2]=5
table[3]=4
table[0]=3
table[4]=1
вот примерно так должно быть и узнать именно ключ самого высокго числа в этом случае table[1]
Просто я х3 может на луа есть какие то фичи этого)
1
24
5 лет назад
Отредактирован prog
1
Замена строковых ключей числовыми мало чем поможет - теперь это просто нумерованный массив целых чисел, который можно отсортировать, но результат сортировки будет немного другим и явно не тем который нужен.
table[0]=10
table[1]=5
table[2]=4
table[3]=3
table[4]=1
Впрочем, для получения двух верхних элементов массива тоже не нужна полная сортировка массива, хватит все того-же одного прохода по массиву, но если для получения верхнего элемента нужна минимум одна переменная, то для получения двух верхних нужно минимум две переменных.
Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.