我正在尝试计算 NSArray 中一组(小)NSNumbers 的中位数。 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
关于iphone - 如何在 NSArray 中找到 NSNumbers 的中值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3250348/