从表中找到最小值的最佳方法?

Bra*_*rey 3 sorting lua

local test = {10,104,20,1042,1042104,592,502,5940,230952,291}

for i, v in pairs(test) do
  table.sort(test)
  print(v)
end
Run Code Online (Sandbox Code Playgroud)

我成功打印出这些值,但我不确定如何打印最小的数字。我已经尝试过使用 math.min 但无济于事。

我尝试过math.min,并尝试使用table.unpack,但都没有奏效。使用 math.min 不会导致任何变化,而使用 table.unpack 会导致它在显示错误之前仅打印第一个数字:

10
lua: main.lua:6: attempt to call field 'unpack' (a nil value)
stack traceback:
    main.lua:6: in main chunk
Run Code Online (Sandbox Code Playgroud)

Pig*_*let 5

获得最小值的最快方法是运行一次表格并记住找到的最小值。

local min = math.huge
for i, v in ipairs(test) do
  min = v < min and v or min
  -- or:  min = math.min(v, min)
end
Run Code Online (Sandbox Code Playgroud)

或者local min = math.min(table.unpack(test))请注意,在旧的 Lua 版本中,解包仅限于几千个值。

排序比较复杂。对于小型数据集来说通常没问题。

顺便说一句,为什么要在循环中对表进行排序?

for i, v in pairs(test) do table.sort(test) print(v) end
Run Code Online (Sandbox Code Playgroud)

移到table.sort(test)循环前面

关于table.unpack,使用unpack。您可能正在运行旧版本的 Lua。我相信它在5.1之后被移入表库