• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Quicksort - segmantation fault

0 głosów
385 wizyt
pytanie zadane 15 sierpnia 2016 w C i C++ przez ignacjusz Bywalec (2,390 p.)

Witam, napisałem kod QuickSorta, kompiluje się, jednak później wychodzi taki błąd:

Segmentation fault

Process returned 139 (0x8B)   execution time : 0.018 s
Press ENTER to continue.

 

Gdy wkleiłem i uruchomiłem to: http://miroslawzelent.pl/wyklady/sortowanie-szybkie-quicksort-dziel-zwyciezaj.pdf (implementacja) to wszystko działało, a kody są prawie takie same (zmienione nazwy zmiennych). Co robię źle?

#include <iostream>

void QuickSort(int* tab, int p, int q)
    {
        int piv = tab[(p+q)/2];
        int i, j, temp;
        i = p;
        j = q;
        do
        {
            while(i<piv) i++;
            while(j>piv) j--;
            if(i<=j)
            {
                temp = tab[i];
                tab[i] = tab[j];
                tab[j] = temp;
                i++;
                j--;
            }
        } while(i<=j);
        if(j>p) QuickSort(tab, p, j);
        if(i<q) QuickSort(tab, i, q);
    }

int main()
{
    int *arr = new int[6]{13,66,-32,19,44,0};
    QuickSort(arr, 0, 5);
    for(int i=0; i<6; i++)
        std::cout<<arr[i]<<std::endl;
    return 0;
}

 

1 odpowiedź

0 głosów
odpowiedź 15 sierpnia 2016 przez Szykem2 Nałogowiec (29,510 p.)
wybrane 15 sierpnia 2016 przez ignacjusz
 
Najlepsza

Linie 11-12 porównujesz indeks z wartością z tablicy. Zmień na:

while(tab[i] < piv) i++;
while(tab[j] > piv) j--;

 

komentarz 15 sierpnia 2016 przez ignacjusz Bywalec (2,390 p.)

Dzięki, siedziałem nad kodem długo i tego nie widziałem smiley

Podobne pytania

0 głosów
1 odpowiedź 346 wizyt
pytanie zadane 5 sierpnia 2016 w C i C++ przez Pac Plus Mądrala (5,560 p.)
+1 głos
1 odpowiedź 1,349 wizyt
pytanie zadane 19 maja 2016 w C i C++ przez draghan VIP (106,230 p.)
0 głosów
1 odpowiedź 296 wizyt
pytanie zadane 19 grudnia 2015 w C i C++ przez emSon Stary wyjadacz (10,480 p.)

93,742 zapytań

142,678 odpowiedzi

323,297 komentarzy

63,328 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Twierdza Linux. Bezpieczeństwo dla dociekliwych

Aby uzyskać rabat -10%, użyjcie kodu pasja-linux, wpisując go w specjalne pole w koszyku.

...