arrays - 查找数组中的所有升序三元组

标签 arrays algorithm matlab combinations

我正在尝试提取任意维度数组中的所有升序三元组。例如,如果我有一个类似 [1 2 3 4] 的数组我想获得 [1 2 3] , [1 2 4] , [2 3 4]

这是一个包含 5 个元素的简单“图形”示例:
enter image description here
箭头是用于迭代的索引,每一步都是找到的三元组。

到目前为止,我刚刚实现了一个简单的排序算法,它将给我有序的数组。

一旦我有了有序数组,我就用 3 个可能的指针(或只是索引)进行迭代,从第三个元素开始增加指针,直到它到达数组的末尾。

一旦到达终点,我将增加第二个指针并将第三个指针重置为紧邻指针 2 的位置,依此类推。

array = [ 3 2 1 5 ];
array = sort(array);
//Now i should iterate over the 3 indexes, but i'm totally lost about how to place them 
for i=1:length(array-2)
    for j=2:length(array-1)
        for k=3:length(array)
         //storing triplet
        end
    end
end

现在我可以遍历数组,并且可以提取所有三元组直到 k索引到达数组末尾。

问题是一旦我到达终点,我必须增加 j索引起点并重置 k索引紧挨着第二个索引。

明确一点:现在一次k到达终点,它将再次从 3 和 j 开始也将是 3,但我需要它们是 j = 3 和 k = 4 在 k 的第一次迭代之后完成等等(这也适用于 ji 相比,查看图片以获得更清晰的解释)。

如何修复索引以正确提取三元组?

最佳答案

在我看来你的内部迭代是在你的外部迭代之后开始的:

for j=(i+1):length(array-1)
    for k=(j+1):length(array-1)

将第一个循环推广到其余循环。

关于arrays - 查找数组中的所有升序三元组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57428196/

相关文章:

javascript - 带有嵌套数组的微模板

arrays - Cantor 的 ZigZag 函数 : Find the nth cell

matlab - MATLAB 能做什么而 R 不能做什么?

c - 如何更新 X86 中 double 组中的所有元素?

c - 我需要将一个整数传递给一个只接受数组的函数

algorithm - 反向传播神经网络的多输入

python - 根据值获取列表的列表索引范围

svn - 适用于 Windows 的 Matlab 的 Subversion 插件

MATLAB 根函数在 MATLAB 和 Simulink 中的行为不同?

javascript - JSDoc3 函数参数的文档是对象数组?