有没有一种方法可以获取 NSMutableArray 的最大值和最小值

发布于 2025-01-02 13:08:36 字数 130 浏览 0 评论 0原文

iOS 中有没有一种方法可以让我获取双数字 NSMutableArray 的最大值和最小值。我正在寻找一种已经存在的方法,而不是让我自己对数组进行排序。如果有一种方法可以让我构建到 API 中来对数组进行排序,我也会感兴趣。

谢谢

Is there a way in iOS for me to get the Max and Min values of an NSMutableArray of double numbers. I'm looking for an already existing method, not for me to sort the array my self. If there is a method for me build into the API for me to sort the array that would interest me too.

Thank you

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

悲歌长辞 2025-01-09 13:08:36

如果您想简单地获取最小和最大双精度数:

NSNumber* min = [array valueForKeyPath:@"@min.self"];
NSNumber* max = [array valueForKeyPath:@"@max.self"];

如果您想简单地对它们进行排序:

// the array is mutable, so we can sort inline
[array sortUsingSelector:@selector(compare:)];

NSNumber 类只需使用 compare: 即可很好地排序,但如果您需要进行更复杂的排序,您可以使用 -sortUsingComparator: 方法,该方法需要一个块来进行排序。 NSArray 上还有一些方法,它们将返回已排序的新数组,而不是修改当前数组。请参阅 NSArrayNSMutableArray 了解更多信息。

If you wanted to simply get the min and max doubles:

NSNumber* min = [array valueForKeyPath:@"@min.self"];
NSNumber* max = [array valueForKeyPath:@"@max.self"];

If you wanted to simply sort them:

// the array is mutable, so we can sort inline
[array sortUsingSelector:@selector(compare:)];

The NSNumber class will sort nicely just using compare:, but if you need to do more complicated sorting, you can use the -sortUsingComparator: method which takes a block to do the sorting. There are also methods on NSArray which will return new arrays that are sorted, instead of modifying the current array. See the documentation for NSArray and NSMutableArray for more information.

新一帅帅 2025-01-09 13:08:36

排序的时间复杂度为 O(nlogn),因此如果您只需要 max 和 min 一次,请不要进行排序。最好的方法是遍历数组并一一比较,这是线性的,即 O(n)。

Sorting is O(nlogn), so if you only want max and min once, please don't do sorting. The best way is to go through the array and compare one by one and that is linear, i.e. O(n).

只等公子 2025-01-09 13:08:36
NSMutableArray * array=[[NSMutableArray alloc]initWithObjects:@"1",@"2",@"3",@"4",@"5",@"6", nil];

NSLog(@"Array:%@",array);


int maxValue;
for (NSString * strMaxi in array) {
    int currentValue=[strMaxi intValue];
    if (currentValue > maxValue) {
        maxValue=currentValue;
    }
}
int miniValue;
for (NSString * strMini in array) {
    int currentValue=[strMini intValue];
    if (currentValue < miniValue) {
        miniValue=currentValue;
    }
}


NSLog(@"Maxi:%d",maxValue);
NSLog(@"Mani:%d",miniValue);
NSMutableArray * array=[[NSMutableArray alloc]initWithObjects:@"1",@"2",@"3",@"4",@"5",@"6", nil];

NSLog(@"Array:%@",array);


int maxValue;
for (NSString * strMaxi in array) {
    int currentValue=[strMaxi intValue];
    if (currentValue > maxValue) {
        maxValue=currentValue;
    }
}
int miniValue;
for (NSString * strMini in array) {
    int currentValue=[strMini intValue];
    if (currentValue < miniValue) {
        miniValue=currentValue;
    }
}


NSLog(@"Maxi:%d",maxValue);
NSLog(@"Mani:%d",miniValue);
沉鱼一梦 2025-01-09 13:08:36

如果您想获得整数中的最大值,请使用此:-

int max = [[array valueForKeyPath:@"@max.intValue"] intValue];

如果您想获得 NSNumber 中的最大值,请使用此:-

NSNumber * max = [array valueForKeyPath:@"@max.intValue"];

If you want to get max value in integer use this:-

int max = [[array valueForKeyPath:@"@max.intValue"] intValue];

If you want to get max value in NSNumber use this:-

NSNumber * max = [array valueForKeyPath:@"@max.intValue"];
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文