Как найти среднее значение NSNumbers в NSArray?

Я пытаюсь вычислить медиану (маленького) набора NSNumbers в NSArray. Каждый объект в NSArray является NSNumber.

Вот то, что я пробую, но это не работает:

NSNumber *median = [smallNSArray valueForKeyPath:@"@median.floatValue"];
13
задан Jordan 14 July 2010 в 20:44
поделиться

1 ответ

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
23
ответ дан 1 December 2019 в 19:58
поделиться