【发布时间】:2015-01-15 09:26:36
【问题描述】:
我有以下问题:我有一个 N 整数三元组数组(即 Nx3 矩阵),我想在 Matlab 中按字典顺序对其进行排序。为了做到这一点,我想到了使用Matlab内置的sort算法,但我想问一下我想到的方法是否正确,或者是否存在更简单的方法(最好使用Matlab例程)。
我想把每个三元组转换成一个数字,然后用sort() 对这些数字进行排序。如果我的整数介于 0 和 9 之间,我可以将它们转换为十进制。但是,它们更大。如果它们的最大绝对值是M,我想把它们转换成这样的(M+1)-ary系统: if (a,b,c) 三元组,对应的整数是a*(M+1)^2+b*(M+1)+c。对这些转换后的整数进行排序会解决问题吗,还是我在推理中犯了逻辑错误?
谢谢!
PS:我知道 Matlab 中的 sort() 确实有字符串的字典选项,但我的整数没有相同的数字长度。也许用前导零填充它们并将它们连接起来就可以了?
【问题讨论】:
-
如果您的整数可能有负数,那么转换为
M+1-base 或填充将不起作用。 -
幸运的是,我的整数都是非负数。我明白为什么填充不起作用,但为什么 (M+1)-base 不适用于负整数?
-
假设
M是 9 并且您有“负数”对应于 (0, 0, 9) 与 (0, 1, -1) 的什么?如果我理解正确,两个元组都将转换为9? -
对...我没想到!谢谢!
标签: matlab sorting lexicographic