Существует ли метод получения Max и Min NSMutableArray
Есть ли способ в iOS для меня получить значения Max и Min для NSMutableArray двойных чисел. Я ищу уже существующий метод, а не для сортировки массива. Если есть метод для меня встроить в API, чтобы я сортировал массив, который меня тоже интересовал.
Спасибо
Ответы
Ответ 1
Если вы хотите просто получить удвоение min и max:
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.
Ответ 2
Сортировка - O (nlogn), поэтому, если вы хотите только один раз max и min, пожалуйста, не сортируйте. Лучший способ - пройти через массив и сравнить один за другим, а это линейный, т.е. O (n).
Ответ 3
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);
Ответ 4
Если вы хотите получить максимальное значение в integer, используйте это: -
int max = [[array valueForKeyPath:@"@max.intValue"] intValue];
Если вы хотите получить максимальное значение в NSNumber, используйте это: -
NSNumber * max = [array valueForKeyPath:@"@max.intValue"];