目標C數學函數問題從Objective C的一組整型值查找最接近的int值
我已經得到了我想要一組內比較其他值,然後確定哪些值ax值從我的x值最接近。
例如,可以說,我已經拿到了5個整數,10,15,20,25
什麼是確定這些數字是最接近於7最好的方法是什麼?
目標C數學函數問題從Objective C的一組整型值查找最接近的int值
我已經得到了我想要一組內比較其他值,然後確定哪些值ax值從我的x值最接近。
例如,可以說,我已經拿到了5個整數,10,15,20,25
什麼是確定這些數字是最接近於7最好的方法是什麼?
Objective-C和Cocoa都沒有提供任何解決這個問題的東西。您可以將您的整數存儲在int
的普通舊數組中,也可以將每個整數存儲在NSNumber
中,並將這些包裝存儲在NSArray
中。
如果您想提前去探測陣列多次,整理一次,然後對每個探頭使用二進制搜索(標準C函數bsearch
或Core Foundation的CFArrayBSearchValues
或可可的-[NSArray indexOfObject:inSortedRange:options:usingComparator:]
)找到最近的兩個元素。如果您只打算探測一次或兩次陣列,只需使用for循環,減法,abs
和MIN
。
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 ;
}
}
祝您好運
最簡單的方法是從較大的一箇中減去較小的數字。所以你想先比較兩個數字,然後做簡單的減法。所以你會看到10-7是3,而7-5只有2。
到目前爲止您嘗試過什麼?你會如何手動做到這一點?這就是說,你可以把它轉換成Objective-C代碼嗎? –
這是功課嗎?如果是這樣,請讓我們知道,以便我們可以適當地回答。 –