gpt4 book ai didi

sorting - 如何在记录原始位置的同时对表格进行排序?

转载 作者:行者123 更新时间:2023-12-05 01:24:31 25 4
gpt4 key购买 nike

我有一个 Lua 整数表,我按升序排序。稍后,我的脚本需要获取最小数字的索引(即排序前它最初所在的位置),尝试一些东西,然后移动到第二小数字的索引,尝试一些东西,等等,直到排序列表的末尾。

我的问题是,当我对它进行排序时,我显然丢失了原始表的原始位置(或索引)。有没有办法,也许使用包含数字和索引的嵌套表来记录原始索引,然后对整数执行排序?

为了让问题更清楚一点:

Original table: 4 6 2

Sorted table: 2 4 6

In this sorted table, I need to know that 2 was at the position 3 before sorting, that 4 was at position 1, and that 6 was at position 2.

最佳答案

像下面这样的东西(写在答案框中的未经测试的代码)无论唯一性如何都应该工作(尽管 lua 表排序不稳定所以你不能保证在重要的情况下首先排序哪个相同的元素):

local origtab = {4, 6, 2}
local sorttab = {}
for i,v in ipairs(origtab) do
sorttab[i] = {index = i, value = v}
end
table.sort(sorttab, function(a, b) return a.value < b.value end)
for i,t in ipairs(sorttab) do
-- t.index is original index
-- t.value is value
end

关于sorting - 如何在记录原始位置的同时对表格进行排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20842817/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com