关于数学:从Objective C中的一组int值中找到最接近的Int值

finding the closest Int value from a set of int values in objective c

Objective C数学函数问题

我有一个x值要与集合中的其他值进行比较,然后确定我的x值与该集合中的哪个值最接近。

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

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


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
    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 ;
        }
    }

祝你好运


Objective-C和Cocoa都无法为您提供解决方案。您可以将整数存储在int的普通旧数组中,也可以将每个整数package在NSNumber中,并将package器存储在NSArray中。

如果要多次探测数组,请事先对其进行排序,然后对每个探测使用二进制搜索(标准C函数bsearch或Core Foundation的CFArrayBSearchValues或Cocoa的-[NSArray indexOfObject:inSortedRange:options:usingComparator:])进行搜索找到最近的两个元素。如果仅要探测一次或两次,只需使用for循环,减法,absMIN


最简单的方法是从较大的数字中减去较小的数字。因此,您需要先比较两个数字,然后再进行简单的减法。因此,您会看到10-7离3远,而7-5离2远。