以与另一个数组相同的顺序对一个数组进行排序

我有两个数组。 让我们说:

array = "Dave", "Mike", "Joe", "Jason", "Kevin" 

 IQ = 110, 145, 75, 122, 130 

我想按智商排序。 说最高到最低。 我可以对一个数组进行排序……然后我回去查看它的位置,然后重新排列另一个数组。 似乎必须有更好的方法来做到这一点。 特别是如果arrays变大。

这就是我现在正在做的事情。

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,Name等特定值进行排序。

 NSArray *users = @[@"Dave",@"Mike",@"Joe",@"Jason",@"Kevin"]; NSArray *iqs = @[@110,@145,@75,@122,@130]; NSMutableArray *array = [NSMutableArray array]; for (int idx = 0;idx<[users count];idx++) { NSDictionary *dict = @{@"Name": users[idx],@"IQ":iqs[idx]}; [array addObject:dict]; } NSSortDescriptor *descriptor = [NSSortDescriptor sortDescriptorWithKey:@"IQ" ascending:NO]; [array sortUsingDescriptors:@[descriptor]]; 

构造一个二维数组,第一行作为名称,第二行作为IQ根据O中的IQ(nlogn)对此数组进行排序