Mam macierz NxM i chciał bym ją posortować biorąc pod uwagę ostatni element wiersza czyli np.
126
345
343
343
345
126
Dobra znalazłem dla tych co w przyszłości będą mieć taki sam problem jak ja wstawię kod jak to zrobić szybko i bezboleśnie
W pierw budujemy funkcje w moim przypadku jest ona następująca:
A następnie wywołujemy sortowanie na macierzy:Kod:static NSInteger order (id a, id b, void* context) { NSNumber* catA = [a lastObject]; NSNumber* catB = [b lastObject]; return [ catB compare: catA]; }
I tyle pozdrawiamKod:[tablicaPomocnicza sortUsingFunction:order context:NULL];
Komputer: MacBook alu 13,3' 2,4 GHz
Telefon: iPhone 4s
Ponawiam temat ponieważ zauważyłem błąd w sortowaniu i nie mogę znaleźć przyczyny tego błędnego sortowania, a mianowicie gdy sortuję dużą tablicę, nie sortuje tak jak powinno czyli,
tablica jest podzielona tak jak by na 2 części i każda z nich rozpoczyna się najmniejszą wartością (czasami różną) wygląda to miej więcej tak. 9-2, a następnie 18-1. nie wiem gdzie leży błąd tego sortowania
Komputer: MacBook alu 13,3' 2,4 GHz
Telefon: iPhone 4s
Skoro macierz to powienienś zrobć to na tablicy wielowymiarowej - kolejny wiersz jako objekt np NSArray lub NSDictionary zawierajacy poszczegolne liczby jako osobne obiekty.
Ja bym to zrobił tak:
Kod://Inicjujemy macierz NSMutableArray *array = [NSMutableArray array]; //Wiersz NSDictionary *row; row = [NSDictionary dictionaryWithObjectsAndKeys:[NSNumber numberWithInt:1],@"C1",[NSNumber numberWithInt:2],@"C2",[NSNumber numberWithInt:6],@"C3", nil]; [array addObject:row]; row = [NSDictionary dictionaryWithObjectsAndKeys:[NSNumber numberWithInt:3],@"C1",[NSNumber numberWithInt:4],@"C2",[NSNumber numberWithInt:5],@"C3", nil]; [array addObject:row]; row = [NSDictionary dictionaryWithObjectsAndKeys:[NSNumber numberWithInt:3],@"C1",[NSNumber numberWithInt:4],@"C2",[NSNumber numberWithInt:3],@"C3", nil]; [array addObject:row]; NSLog(@"sdsdsd %@",array); //Deskryptor NSSortDescriptor *colum3Th = [[NSSortDescriptor alloc] initWithKey:@"C3" ascending:YES]; NSArray *descriptor = [NSArray arrayWithObjects:colum3Th, nil]; NSArray *sortedArray = [array sortedArrayUsingDescriptors:descriptor]; NSLog(@"sdsdsd %@",sortedArray);
Ostatnio edytowane przez thorn ; 20.02.2012 o 23:00
.Apple Macintosh LC 630
.Apple PowerBook G4 1.33 GHz 17"
.Apple MacBook Pro C2D 2.5 GHz 17"
.Apple iPhone 4s 32GB