1

我有一个数字数组。我需要将数组中的每个数字与数组中的每个其他数字进行比较,而不需要任何重复的比较集。例如,需要比较索引 0 和 1 处的对象,但不想稍后通过检查索引 1 和 0 处的对象来加倍。

任何人都可以帮我解决这个算法。这将不胜感激。

4

3 回答 3

5

我不知道你需要做什么,因为可能有更好的方法来完成你想要做的任何事情,但对于你正在谈论的情况,你可以做一个简单的:

for (int n=0;n<[array count];n++) {
    for (int m=n+1;m<[array count];m++) {
        //check your array based on objects at index n and m;
    }
}

这只是从头到尾循环遍历数组,并且对于每个对象循环遍历它之后的每个对象,您可以比较它们或做任何事情。开始内部循环n+1而不是0阻止您重复比较。

于 2013-08-25T21:59:19.130 回答
2

如果它有助于解决您的问题,请使用 NSMutableOrderedSet。或另一个可变数组,并将原始数组中的对象一个一个添加到其中,containsObject:以测试您要插入的对象是否是重复的。

于 2013-08-25T22:06:00.430 回答
0

您可以遍历数组,并在每个数字处将其与数组中的下一个数字进行比较。如果您有大小为 5 的数组,则在 arr[2] 将其与 arr[3]、arr[4] 进行比较。

伪代码:

NSArray *arr;
for(int i = 0; i < arr.count ; i++)
{
  NSNumber *num1 = [arr objectAtIndex:i];
  for(int j = i + 1; j < arr.count; j++)
     {
       NSNumber *num2 = [arr objectAtIndex:j];
       //compare here num1 with num2
     }
 }
于 2013-08-25T21:59:26.647 回答