Lua中的合并功能

Mik*_*e K 2 sorting merge lua

嘿,我正在尝试从Lua中的merge sort实现合并功能.我非常了解算法,但我是Lua的新手.我不断得到一个"错误的参数#1到'插入'(表格预期,得到零)"我相信错误指向我的递归调用.我无法理解,我感觉这是非常微不足道的.我只需要一位Lua大师给我一些指导.谢谢.这是我的功能:

function merge(l1, l2)
if # l1 == 0 then
    return l2
elseif # l2 == 0    then
    return l1
else
    if l1[1] <= l2[1] then
        tmp = l1[1]
        table.remove(l1,1)
        return table.insert(merge(l1,l2),tmp)

    else 
        tmp = l2[1]
        table.remove(l2,1)
        return table.insert(merge(l1,l2),tmp)
    end
end
end
Run Code Online (Sandbox Code Playgroud)

pon*_*zao 6

我不完全确定你想用这个merge函数实现什么,但一个明显的问题是table.insert不返回表,它返回nil.

在表中存储合并的结果t,使用table.inserton t和最后返回t似乎没有像以前那样破坏.

function merge(l1, l2) 
    if #l1 == 0 then
        return l2
    elseif # l2 == 0 then
        return l1
    else
        if l1[1] <= l2[1] then
            local tmp = table.remove(l1, 1)
            local t = merge(l1, l2) 
            table.insert(t, tmp)
            return t
        else 
            local tmp = table.remove(l2, 1)
            local t = merge(l1, l2) 
            table.insert(t, tmp)
            return t
        end 
    end 
end
Run Code Online (Sandbox Code Playgroud)

关于我做的其他一些修改的说明.table.remove返回已删除的元素,因此您不必先访问该元素,然后将其删除.我建议使用local变量关键字,因为在Lua中,所有变量默认都是全局变量.