iphone - 如何在 NSArray 中找到 NSNumbers 的中值?

标签 iphone objective-c cocoa key-value

我正在尝试计算 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/

相关文章:

ios - 如何将完整数据写入 UIImage 到 NSOutputStream

objective-c - 为什么在默认的 Xcode 模板中有两个接口(interface)声明?

objective-c - 如何使用 Cocoa 创建临时文件?

objective-c - 已弃用 : Rounded Textured Segmented Control

ios - 如何比较两个 NSMutableArray?

iphone - 如何在iPhone模拟器上模拟来电?

ios - LaunchScreen.storyboard 如何重定向到 Main.storyboard

iphone - 如何录制/保存iPhone应用程序中正在播放的音频?

ios - 剩余空间中的自动布局居中 View (以编程方式)

iphone - 如何对用户在 iPhone 中输入的电话号码的文本字段执行验证?