sigsegv podczas quicksorta

0

Witam. Napisałem program, ma sortować punkty, ale to nieważne. Wszystko kompiluje się dobrze, ale pojawia się problem podczas wykonania, którego nie potrafię sobie wytłumaczyć.
Otóż chodzi o następujący fragment kodu(funkcji lomuto_partition):

if(pp[j]->*wsk <= x->*wsk)
            {
                      swap(pp, i, j);
                      i++;
            }

Otóż wywala tutaj segmentation fault. Co dziwne jeśli zamienię operator <= na < to wszystko działa w porządku. Jeśli nie operuję na wskaźnikach do składników klasy błąd również występuje. O co chodzi, co może być nie tak? Będę wdzięczny za odpowiedź.
P.S Nie wiem czy to może mieć znacznie, ale funkcja swap wygląda tak:

void swap(punkt** tab, int i, int j)
{ 
     punkt* pom = tab[i];
     tab[i] = tab[j];
     tab[j] = pom;
}
0

A po kiego grzyba warunek <=? Co ty chcesz - równe elementy miejscami zamieniać? To nie jest zbyt celowe - a w dodatku jak widać po efektach: niezbyt działa.

0

moim zdaniem coś masz pochrzanione z indeksami tablicy - przekraczasz zakres tablicy (standardowy przypadek dla "segmentation fault"), niestety z załączonego kodu tego nie widać.
Założę się, że wartość i jest za duża podczas końca sortowania. //quetz: me too

1 użytkowników online, w tym zalogowanych: 0, gości: 1