"For" 循环所有可能的组合而不重复

"For" loop for all possible combinations without repetition

我有 table 个值,我需要比较所有这些值。问题是,我不想比较相同的值两次(例如,循环比较值 1 - 2、1 - 3、2 - 1 和 2 - 1 与 1 - 2 相同)。我在一个看起来像这样的循环中写了一个循环:

for (int i = 0; i < numberOfSets; i++) {
        for (int j = 1; j < numberOfSets; j++) {

        //compare element i and j here
    }
}

但是我该如何修改这个循环来跳过重复呢?到目前为止,我尝试的是在 i == j:

时增加 j
for (int i = 0; i < numberOfSets; i++) {
        for (int j = 1; j < numberOfSets; j++) {


            if(i == j) {
                j++;
            } else {
                //compare element i and j
            }
    }
}

但它似乎无法正常工作。有没有更好的方法来循环我想要的方式?

只需用j = i + 1开始内循环。

for (int i = 0; i < numberOfSets; i++) {
    for (int j = i + 1; j < numberOfSets; j++) {
        // do stuff
    }
}
for (int i = 0; i < numberOfSets; i++) {
        for (int j = i+1; j < numberOfSets; j++) {
        //compare element i and j here
    }
}

内循环跳过外循环覆盖的元素