Чет искал в гугле и не нашел конкретного моего случая либо так искал. короче примерно дано
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 лет назад
Отредактирован prog
1
Замена строковых ключей числовыми мало чем поможет - теперь это просто нумерованный массив целых чисел, который можно отсортировать, но результат сортировки будет немного другим и явно не тем который нужен.
table[0]=10
table[1]=5
table[2]=4
table[3]=3
table[4]=1
Впрочем, для получения двух верхних элементов массива тоже не нужна полная сортировка массива, хватит все того-же одного прохода по массиву, но если для получения верхнего элемента нужна минимум одна переменная, то для получения двух верхних нужно минимум две переменных.
0
8
5 лет назад
Отредактирован Castiel
0
prog:
Замена строковых ключей числовыми мало чем поможет - теперь это просто нумерованный массив целых чисел, который можно отсортировать, но результат сортировки будет немного другим и явно не тем который нужен.
table[0]=10
table[1]=5
table[2]=4
table[3]=3
table[4]=1
Впрочем, для получения двух верхних элементов массива тоже не нужна полная сортировка массива, хватит все того-же одного прохода по массиву, но если для получения верхнего элемента нужна минимум одна переменная, то для получения двух верхних нужно минимум две переменных.
Мне нужно узнать просто ключ самого высого числа! А потом по этому ключу проверить через if then end Вот и все ) изначально просто не правильно подошел к этому..
1
24
5 лет назад
1
Castiel, окей. И что мешает это сделать? Для этого нужна одна переменная (можно две - одну для ключа и одну для значения), один цикл, один if внутри цикла и пара присвоений переменной. Для нумерованного массива цикл по индексу, для ассоциативного - по ключам через pairs.
2
8
5 лет назад
2
prog:
Castiel, окей. И что мешает это сделать? Для этого нужна одна переменная (можно две - одну для ключа и одну для значения), один цикл, один if внутри цикла и пара присвоений переменной. Для нумерованного массива цикл по индексу, для ассоциативного - по ключам через pairs.
Так я уже сделал, написал просто что изначально затупил и не првильно подешел к этому )))
local key_count=0
local j=COUNT[0]
for i=1,6 do
if j<COUNT[i]then
j=COUNT[i]
key_count=i
end
end

так или чет не то ?
0
24
5 лет назад
0
Castiel, да, типа того.
А если немного доработать - можно и второе сверху значение найти в том-же цикле, если оно еще нужно.
0
8
5 лет назад
0
prog:
Castiel, да, типа того.
А если немного доработать - можно и второе сверху значение найти в том-же цикле, если оно еще нужно.
спс бро как тебе плюсик поставить )
Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.