Odpowiedz na ten temat
Pokaż wyniki od 1 do 5 z 5
  1. Avatar macQUB
    Dołączył
    Aug 2006
    Skąd
    Podkarpacie
    Postów
    251

    Cytuj | #1

    Mam macierz NxM i chciał bym ją posortować biorąc pod uwagę ostatni element wiersza czyli np.

    126
    345
    343

    343
    345
    126
    Komputer: MacBook alu 13,3' 2,4 GHz
    Telefon: iPhone 4s


  2. Avatar macQUB
    Dołączył
    Aug 2006
    Skąd
    Podkarpacie
    Postów
    251

    Cytuj | #2

    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:

    Kod:
    static NSInteger order (id a, id b, void* context) {
        NSNumber* catA = [a lastObject];
        NSNumber* catB = [b lastObject];
        return [ catB compare: catA];
    }
    A następnie wywołujemy sortowanie na macierzy:

    Kod:
     [tablicaPomocnicza sortUsingFunction:order context:NULL];
    I tyle pozdrawiam
    Komputer: MacBook alu 13,3' 2,4 GHz
    Telefon: iPhone 4s

  3. Avatar macQUB
    Dołączył
    Aug 2006
    Skąd
    Podkarpacie
    Postów
    251

    Cytuj | #3

    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

  4. Avatar thorn
    Dołączył
    Sep 2006
    Postów
    84

    Cytuj | #4

    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

  5. Avatar macQUB
    Dołączył
    Aug 2006
    Skąd
    Podkarpacie
    Postów
    251

    Cytuj | #5

    Już wiem gdzie był błąd sortowało dobrze ale NSString zmieniłem na NSNumber i już działa
    Komputer: MacBook alu 13,3' 2,4 GHz
    Telefon: iPhone 4s

Odpowiedz na ten temat