Q: 如何在 Lua 中对数字表格进行排序

我已经寻找了一段时间来解决我的问题,但是我还没有得到完全解决的东西。本质上,这个函数确实进行了排序,但它没有将表格中的数字排序,只是对1到10的数字进行了排序

local numbers = {18, 45, 90, 77, 65, 18, 3, 57, 81, 10}

local function selectionSort(t)--t 是要排序的表格

  local t = {18, 45, 90, 77, 65, 18, 3, 57, 81, 10}

  local tkeys = {}
for k in pairs(t) do table.insert(tkeys, k) end
table.sort(tkeys)
for _, k in ipairs(tkeys) do print(k, t[k]) end


  return t -- 返回已排序的表格
end

list = selectionSort(list)

这是输出结果

1   18
2   45
3   90
4   77
5   65
6   18
7   3
8   57
9   81
10  10

我想要的是

3   18
10  45
18  90
18  77
45  65
57  18
65  3
77  57
81  81
90  10

有解决方法吗?

点赞
用户7396148
用户7396148

你正在从你的输入中获取 key,并希望得到其对应的 value

你可以这样修改:

local list = {18, 45, 90, 77, 65, 18, 3, 57, 81, 10}

local function selectionSort(t)--t 是待排序的表格

  local tSorted = {}
  for _,v in pairs(t) do
    table.insert(tSorted, v)
  end

  table.sort(tSorted)

  for i=1,#t,1 do
    print(tSorted[i], t[i])
  end

  return tSorted -- 返回已排序的表格
end

list = selectionSort(numbers)

这样你就会得到:

sorted  original
3       18
10      45
18      90
18      77
45      65
57      18
65      3
77      57
81      81
90      10
2021-03-01 18:24:16