我有一个数字数组。我需要将数组中的每个数字与数组中的每个其他数字进行比较,而不需要任何重复的比较集。例如,需要比较索引 0 和 1 处的对象,但不想稍后通过检查索引 1 和 0 处的对象来加倍。
任何人都可以帮我解决这个算法。这将不胜感激。
我有一个数字数组。我需要将数组中的每个数字与数组中的每个其他数字进行比较,而不需要任何重复的比较集。例如,需要比较索引 0 和 1 处的对象,但不想稍后通过检查索引 1 和 0 处的对象来加倍。
任何人都可以帮我解决这个算法。这将不胜感激。
我不知道你需要做什么,因为可能有更好的方法来完成你想要做的任何事情,但对于你正在谈论的情况,你可以做一个简单的:
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
阻止您重复比较。
如果它有助于解决您的问题,请使用 NSMutableOrderedSet。或另一个可变数组,并将原始数组中的对象一个一个添加到其中,containsObject:
以测试您要插入的对象是否是重复的。
您可以遍历数组,并在每个数字处将其与数组中的下一个数字进行比较。如果您有大小为 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
}
}