Sorting Lua中的合并函数
嘿,我正试图在Lua中实现merge sort中的merge函数。我对算法很了解,但我对Lua是新手。我不断得到一个“错误的参数#1到'insert'(表应为零)”,我相信错误指向我的递归调用。我搞不懂,我觉得这是件很琐碎的事。我只需要一个Lua大师给我一些指导。谢谢以下是我的功能:Sorting Lua中的合并函数,sorting,merge,lua,Sorting,Merge,Lua,嘿,我正试图在Lua中实现merge sort中的merge函数。我对算法很了解,但我对Lua是新手。我不断得到一个“错误的参数#1到'insert'(表应为零)”,我相信错误指向我的递归调用。我搞不懂,我觉得这是件很琐碎的事。我只需要一个Lua大师给我一些指导。谢谢以下是我的功能: function merge(l1, l2) if # l1 == 0 then return l2 elseif # l2 == 0 then return l1 else if l
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
函数合并(l1、l2)
如果#l1==0,则
返回l2
elseif#l2==0那么
返回l1
其他的
如果l1[1]我不能完全确定使用merge
函数想要实现什么,但一个明显的问题是table.insert
不返回表,它返回nil
使用table将合并结果存储在表t
中。在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
函数合并(l1、l2)
如果#l1==0,则
返回l2
elseif#l2==0那么
返回l1
其他的
如果l1[1]嘿。谢谢你的提示!它工作得很好!merge函数获取两个已排序的表,并将它们合并到一个已排序的表中。我必须更改表格。将(t,tmp)插入表格。插入(t,1,tmp)以便在返回表格的开头插入项目。Mike K,我想你忘了将ponzao的答案标记为正确。