【问题标题】:finding the closest Int value from a set of int values in objective c从目标 c 中的一组 int 值中找到最接近的 Int 值
【发布时间】:2012-09-27 02:02:59
【问题描述】:

objective c 数学函数题

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

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

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

【问题讨论】:

  • 到目前为止你尝试过什么?您将如何手动执行此操作?话虽如此,你能把它翻译成objective-c代码吗?
  • 这是作业吗?如果是这样,请告诉我们,以便我们做出适当的回答。

标签: objective-c math int


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:
        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 ;
            }
        }
    

    祝你好运

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        猜你喜欢
        • 2015-10-07
        • 1970-01-01
        • 2018-01-20
        • 1970-01-01
        • 2016-07-22
        • 1970-01-01
        • 2015-03-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多