数组中的一个元素与同一数组中的所有其他元素的比较

标签 c arrays loops compare

我知道我们可以通过这种方式将数组的每个元素与其他元素进行比较:

    for (f = 0; f < length2; f++) {
    for (p = f + 1; p < length2 ; p++) {
        if(!(compareThem(split[f],split[p]) == 1) && (split[f] != 0) && (split[p] != 0)) {
            no_of_unique++;
        }
    }
}

但是,我只希望在检查索引 f 的元素与索引 p 的所有元素后 no_of_unique 增加。然而,这会检查元素 f 的 p= f + 1,增加 no_of_unique,然后检查其他元素并针对每种情况增加它。我只需要在检查完所有元素后增加它。任何帮助,将不胜感激。

P.S 如果它们彼此相等,compareThem 函数基本上只返回 1。

最佳答案

您可以在找到等于split[f]的元素后简单地中断,而不是在内循环范围内递增no_of_unique。然后,在内循环之外,您应该检查 p 是否等于 length2,这意味着内循环没有中断并遍历了所有元素,直到结束数组。 (即没有遇到等于 split[f] 的元素)

for (f = 0; f < length2; f++) {
    if (split[f] != 0) {
        for (p = 0; p < length2 ; p++) {
            if( f != p && (split[p] != 0) && (compareThem(split[f],split[p]) == 1)) {
                break;
            }
        }
        if (p == length2) {
            no_of_unique++;
        }
    }
}

关于数组中的一个元素与同一数组中的所有其他元素的比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40219101/

相关文章:

javascript - 如何根据对象中的属性对对象数组进行分组

python - 获取数组中从右上角到左下角的所有对角线

java - while 循环会停止执行吗?

python - 'pygame.event.get()' 的更快版本。为什么事件会被错过以及为什么事件会被延迟?

javascript - 如何在不更改属性数据类型的情况下推送对象数组?

c - 许多客户端打印后,Arduino (Uno) 以太网客户端连接失败

python - 从python数组中分割偶数/奇数行的最短方法?

c - (null) 在打印字符串时正在打印

c - 添加数组所有元素的宏?

c - 指向结构的指针数组,该结构中有指针