У меня есть два массива. Скажем:Сортировка одного массива в том же порядке, что и другой массив
array = "Dave", "Mike", "Joe", "Jason", "Kevin"
и
IQ = 110, 145, 75, 122, 130
Я хочу, чтобы отсортировать их IQ. Скажите наивысшее до самого низкого. Я могу сортировать один массив ... и затем возвращаюсь и проверяю, в какой позиции он находился, а затем перестроил другой массив. Кажется, должен быть лучший способ сделать это. Особенно, если массив становится больше.
Вот как я это делаю прямо сейчас.
d1, d2, d3, d4, d5
являются моими IQ
переменной. Я использую массив sortBack
, чтобы переставить другой массив в том же порядке.
NSMutableArray *myArray = [NSMutableArray arrayWithObjects:[NSString stringWithFormat:@"%d",d1], [NSString stringWithFormat:@"%d",d2],[NSString stringWithFormat:@"%d",d3], [NSString stringWithFormat:@"%d",d4],[NSString stringWithFormat:@"%d",d5], nil];
//sorting
[myArray sortUsingComparator:^NSComparisonResult(NSString *str1, NSString *str2) {
return [str1 compare:str2 options:(NSNumericSearch)];
}];
for(int i=0;i<5;i++)
{
if([[myArray objectAtIndex:i] integerValue]==d1)
{
sortBackArray[i]=1;
}
else if([[myArray objectAtIndex:i] integerValue]==d2)
{
sortBackArray[i]=2;
}
else if([[myArray objectAtIndex:i] integerValue]==d3)
{
sortBackArray[i]=3;
}
else if([[myArray objectAtIndex:i] integerValue]==d4)
{
sortBackArray[i]=4;
}
else if([[myArray objectAtIndex:i] integerValue]==d5)
{
sortBackArray[i]=5;
}
}
Почему вы поддерживаете для этого два массива. Лучше иметь массив словарей с именами и значениями IQ. Затем вы можете создать sortDescriptor с ключом IQ и отсортировать массив. Когда у вас есть соответствующая информация, всегда держите их вместе. – Anupdas
Да, я думал, что это может быть путь, но я, похоже, путаюсь со словарем. Я еще раз посмотрю на это. –
Было бы очень сложно, если бы вы не использовали словари или пользовательские объекты модели, чтобы сохранить структурированные данные. Я привел пример. Взглянуть. – Anupdas