lua语言的排序问题

biwenzheng 发布于 08/19 16:36
阅读 58
收藏 0

关于lua的排序问题:
现在有table如下
t = {};
t["33741"] = 12;
t["33748"] = 25;
t["33743"] = 67;
t["33744"] = 41;
t["34751"] = 41;

-- ---遍历的结果
-- 33748   25
-- 33741   12
-- 33744   41
-- 34751   41
-- 33743   67
-- 我希望能够通过value的值进行排序,并获得这样的结果
-- 12      33741
-- 25      33748
-- 41      33744
-- 41      34751
-- 67      33743
----下面是我现在使用的方法,但是如此嵌套的循环遍历次数太多了,若是数据再多些,遍历次数最坏的结果可能达到上百,上千次,有没有更好的方法来实现这个结果,

sortTable = {}
for tkey,tvalue in pairs(t) do
    table.insert(sortTable,tvalue);
end

table.sort(sortTable);

for skey,svalue in pairs(sortTable) do
    print(skey,svalue);
end
--i = 1
for skey,svalue in pairs(sortTable) do 
    for tkey,tvalue in pairs(t) do
       -- print(i) --为了查看遍历了几次
      --  i = i + 1;
        if tvalue == svalue then
            print(tvalue,tkey)
            t[tkey] = nil --为了能够让value相同的值只遍历一次
        end
    end
end
 

 

加载中
返回顶部
顶部