首页投稿(暂停使用,暂停投稿)我是程序员;您好程先生;叫我序员就好了程序员

Lua table.sort()

2016-08-06  本文已影响8559人  AlbertS
排序.png

前言#

看着这漂亮的字母小石头,你一定可以猜到今天的主题,那就是排序,说起排序我们都不陌生,比如冒泡、归并、选择等等,今天讲的这个函数说起来有点像像c语言里面的qsort()函数,需要自己提供比较函数,接下来我们一起来看一下。

内容#


table.sort()##


Usage##

local tabLanguage = { 
    "Lua",
    "swift",
    "python",
    "java",
    "c++",
};

print("\nLUA>>>>>>the source elements of table tabLanguage is:")
for k,v in pairs(tabLanguage) do
    print(k,v)
end

-- 使用默认函数排序
table.sort(tabLanguage)
print("\nLUA>>>>>>After sort, the elements of table tabLanguage is:")
for k,v in pairs(tabLanguage) do
    print(k,v)
end

-- 定义自己的比较函数
local function my_comp(element1, elemnet2)
    return string.len(element1) < string.len(elemnet2)
end

-- 使用自己的比较函数排序(按字符由短到长排序)
table.sort(tabLanguage, my_comp)
print("\nLUA>>>>>>After sort using my_comp, the elements of table tabLanguage is:")
for k,v in pairs(tabLanguage) do
    print(k,v)
end

-- 再定义一个自己的比较函数
local function my_comp_new(element1, elemnet2)
    return element1 > elemnet2
end

-- 使用自己的比较函数排序(按字符长段排序)
table.sort(tabLanguage, my_comp_new)
print("\nLUA>>>>>>After sort using my_comp_new, the elements of table tabLanguage is:")
for k,v in pairs(tabLanguage) do
    print(k,v)
end

-- 定义处理nil的函数
local function my_comp_new_with_nil(element1, elemnet2)
    if element1 == nil then
        return false;
    end
    if elemnet2 == nil then
        return true;
    end
    return element1 > elemnet2
end

-- 创造一个空洞
tabLanguage[2] = nil
-- 使用默认函数排序
--table.sort(tabLanguage, my_comp_new_with_nil)
print("\nLUA>>>>>>After sort using my_comp_new_with_nil, the elements of table tabLanguage is:")
for k,v in pairs(tabLanguage) do
    print(k,v)
end
table_sort.png

总结#

上一篇下一篇

猜你喜欢

热点阅读