littleknife 发表于 2011-11-22 11:19:47

求解一个lua基础的排序问题,有懂得请不吝赐教下。这里拜谢在先!

MUSH里的一个lua的表格:
testlua={
=6,
=3,
=8,
=9,
=4,
=7,
}

我想按照后边的value排序,有没有啥办法实现?就是结果是(从小到大):
testlua={
=3,
=4,
=6,
=7,
=8,
=9,
}

北大侠客行MUD,中国最好的MUD

jason 发表于 2011-11-22 11:21:55

自己写个冒泡排序呗

littleknife 发表于 2011-11-22 11:33:39

本帖最后由 littleknife 于 2011-11-22 12:13 PM 编辑

回复 2# jason


真没想到。。。唉。。没学好啊。。。

testlua={
["item3"]=6,
["item1"]=3,
["item5"]=8,
["item6"]=9,
["item2"]=4,
["item4"]=7,
}
print("=================")
ts = {} -- table to hold the keys
table.foreach (testlua, function (k, v) table.insert (ts, k) end )
table.sort (ts) -- sort keys
table.foreachi (ts, print) -- print sorted keys



结贴。。惭愧,惭愧。。

jizong 发表于 2011-11-22 13:05:16

数据量小,可以冒泡

唉,看jason提到冒泡,我一下想起来,读书的时候,学的“数据结构”了

jason 发表于 2011-11-22 13:28:08

开辟一个新数组那是浪费空间。有一个临时变量就好了。

trace 发表于 2011-11-22 13:33:27

回晚了啊。呵呵。
testlua={
["item3"]=6,
["item1"]=3,
["item5"]=8,
["item6"]=9,
["item2"]=4,
["item4"]=7,
}
ts = {} -- table to hold the keys
for k,v in pairs(testlua) do
        table.insert(ts,{K=k,V=v})
end
table.sort (ts,function(a,b) return a.V< b.V end) -- sort keys
for _,item in ipairs(ts) do
        print(item.K,item.V)
end

littleknife 发表于 2011-11-22 14:34:22

谢谢各位达人,大侠!这里灰常感谢各位的指点!介个介个。。。太有用啦。。。。哈哈哈。。。

jizong 发表于 2011-11-22 16:36:32

回复jizong


    弱弱地问一句,数据结构在工作的时候不常用吗?
istillsun 发表于 2011-11-22 01:23 PM http://pkuxkx.com/forum/images/common/back.gif


    我的工作跟计算机完全不沾边~~~
页: [1]
查看完整版本: 求解一个lua基础的排序问题,有懂得请不吝赐教下。这里拜谢在先!