Я пытаюсь вычислить медиану (маленького) набора NSNumbers в NSArray. Каждый объект в NSArray является NSNumber.
Вот то, что я пробую, но это не работает:
NSNumber *median = [smallNSArray valueForKeyPath:@"@median.floatValue"];
NSArray *sorted = [smallNSArray sortedArrayUsingSelector:@selector(compare:)]; // Sort the array by value
NSUInteger middle = [sorted count] / 2; // Find the index of the middle element
NSNumber *median = [sorted objectAtIndex:middle]; // Get the middle element
Вы можете стать красивее. Например, медиана набора с четным числом чисел технически является средним из средних двух чисел. Вы также можете обернуть это аккуратным однострочным методом в категории на NSArray
:
@interface NSArray (Statistics)
- (id)median;
@end
@implementation NSArray (Statistics)
- (id)median
{
return [[self sortedArrayUsingSelector:@selector(compare:)] objectAtIndex:[self count] / 2];
}
@end