Lua_多重排序

来源:互联网 发布:淘宝充气娃娃图片 编辑:程序博客网 时间:2024/06/06 05:35
网上有好多排序,不过写的都大同小异。本文讲解下多重排序,意思是多个条件排序。 
前提: 
1.Lua排序的原理是冒泡排序,即从前往后比较,满足一定条件A则交换,否则不交换。 

2.Lua排序函数table.sort(tbl, sortFunc), sortFunc中会比较前后表中前后两个值,sortFunc函数返回true则不交换,返回false则交换。 

例子:

table_demo = {[1] = {age = 18,height = 1.6,weight = 100,},[2] = {age = 13,height = 1.5,weight = 80,},[3] = {age = 14,height = 1.7,weight = 120,},[4] = {age = 11,height = 1.6,weight = 110,},[5] = {age = 18,height = 1.6,weight = 90,},}local function sortFunc(a, b)    if a.age == b.age then        if a.height == b.height then            return a.weight < b.weight        else            return a.height < b.height        end    else        return a.age < b.age    endend--目标:将table_demo 按照age从小到大排序, 若age大小相等则按照height从小到大排序, 如果height一样大,则按weight从小到大排序table.sort(table_demo, sortFunc)for k=1, 5 do    print(string.format("k:%d   age:%d   height:%.1f   weight:%d", k, table_demo[k].age, table_demo[k].height, table_demo[k].weight))end


0 0
原创粉丝点击