2

目标c数学函数问题

我有一个 x 值,我想将它与一组中的其他值进行比较,然后确定我的 x 值最接近该组中的哪个值。

例如,假设我有整数 5、10、15、20、25。

确定这些数字中哪个最接近 7 的最佳方法是什么?

4

3 回答 3

4
    int closestDistance = INT32_MAX;
    int indexOfClosestDistance = -1;
    int x = 7;

    for (int i=0; i < [yourArray count]; i++)
    {
        int num = yourArray[i];
        int diff = abs(num - x);

        if (diff < closestDistance)
        {
            closestDistance = diff;
            indexOfClosestDistance = i ;
        }
    }

祝你好运

于 2012-10-05T21:44:29.420 回答
1

Objective-C 和 Cocoa 都没有为你提供任何解决这个问题的方法。您可以将 int 存储在一个普通的旧数组中int,或者您可以将每个intNSNumber包装在 an 中并将包装器存储在NSArray.

如果您要多次探测数组,请提前对它进行一次排序,然后对每个探测使用二进制搜索(标准 C 函数bsearch或 Core FoundationCFArrayBSearchValues或 Cocoa 的-[NSArray indexOfObject:inSortedRange:options:usingComparator:])来查找最近的两个元素。如果您只打算对数组进行一次或两次探测,只需使用 for 循环、减法absMIN.

于 2012-10-05T21:41:07.420 回答
0

最简单的方法是从较大的数字中减去较小的数字。所以你想先比较这两个数字,然后做简单的减法。所以你会看到 10-7 距离 3 远,而 7-5 距离只有 2 远。

于 2012-10-05T22:15:11.147 回答