Tôi có hai mảng. Hãy nói rằng:Sắp xếp một mảng theo thứ tự giống như một mảng khác
array = "Dave", "Mike", "Joe", "Jason", "Kevin"
và
IQ = 110, 145, 75, 122, 130
Tôi muốn sắp xếp chúng theo chỉ số IQ. Nói cao nhất đến thấp nhất. Tôi có thể sắp xếp một mảng ... và sau đó tôi quay trở lại và kiểm tra xem vị trí của nó và sau đó sắp xếp lại mảng khác. Có vẻ như phải có cách tốt hơn để làm điều này. Đặc biệt nếu mảng lớn hơn.
Đây là cách tôi đang thực hiện ngay bây giờ.
d1, d2, d3, d4, d5
là biến số IQ
của tôi. Tôi sử dụng mảng sortBack
để sắp xếp lại một mảng khác theo cùng thứ tự.
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;
}
}
Tại sao bạn duy trì hai mảng cho điều này. Tốt hơn là nên có một loạt các từ điển có tên và giá trị IQ. Sau đó, bạn có thể tạo một trình phân loại với IQ chính và sắp xếp mảng. Khi bạn có thông tin liên quan, hãy luôn giữ chúng lại với nhau. – Anupdas
Yea, tôi nghĩ rằng đó có thể là cách để đi, nhưng tôi có xu hướng bị nhầm lẫn với các công cụ từ điển. Tôi sẽ xem lại nó một lần nữa. –
Sẽ rất khó khăn nếu bạn không sử dụng từ điển hoặc các đối tượng mô hình tùy chỉnh để giữ cho dữ liệu được cấu trúc. Tôi đã đăng một ví dụ. Hãy xem. – Anupdas