iOS中是否有办法让我获得双数的NSMutableArray的Max和Min值。我正在寻找一种已经存在的方法,而不是我自己对数组进行排序。如果有一种方法让我构建到API中,我也可以对我感兴趣的数组进行排序。
谢谢
答案 0 :(得分:46)
如果您想简单地获得最小和最大双打:
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
上还有一些方法将返回已排序的新数组,而不是修改当前数组。有关详细信息,请参阅NSArray和NSMutableArray的文档。
答案 1 :(得分:2)
排序是O(nlogn),所以如果你只需要max和min一次,请不要排序。最好的方法是通过数组并逐个进行比较,这是线性的,即O(n)。
答案 2 :(得分:2)
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);
答案 3 :(得分:1)
如果要获得整数的最大值,请使用: -
int max = [[array valueForKeyPath:@"@max.intValue"] intValue];
如果你想在NSNumber中获得最大值,请使用: -
NSNumber * max = [array valueForKeyPath:@"@max.intValue"];