2012-10-05 26 views
1

目標C數學函數問題從Objective C的一組整型值查找最接近的int值

我已經得到了我想要一組內比較其他值,然後確定哪些值ax值從我的x值最接近。

例如,可以說,我已經拿到了5個整數,10,15,20,25

什麼是確定這些數字是最接近於7最好的方法是什麼?

+0

到目前爲止您嘗試過什麼?你會如何手動做到這一點?這就是說,你可以把它轉換成Objective-C代碼嗎? –

+0

這是功課嗎?如果是這樣,請讓我們知道,以便我們可以適當地回答。 –

回答

1

Objective-C和Cocoa都沒有提供任何解決這個問題的東西。您可以將您的整數存儲在int的普通舊數組中,也可以將每個整數存儲在NSNumber中,並將這些包裝存儲在NSArray中。

如果您想提前去探測陣列多次,整理一次,然後對每個探頭使用二進制搜索(標準C函數bsearch或Core Foundation的CFArrayBSearchValues或可可的-[NSArray indexOfObject:inSortedRange:options:usingComparator:])找到最近的兩個元素。如果您只打算探測一次或兩次陣列,只需使用for循環,減法,absMIN

3
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 ; 
     } 
    } 

祝您好運

0

最簡單的方法是從較大的一箇中減去較小的數字。所以你想先比較兩個數字,然後做簡單的減法。所以你會看到10-7是3,而7-5只有2。