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

Quicksort - błąd wykonania

0 głosów
187 wizyt
pytanie zadane 8 lutego 2019 w C i C++ przez szymonq Użytkownik (770 p.)

Witam. Mam problem z moją implementacją quicksorta. Jak odpalam u siebie wszystko jest ok, nie udało mi się znaleźć zestawu danych, który powoduje wysypanie się programu. Na SPOJu dostaję jednak komunikat "błąd wykonania (SIGSEGV)". Co może być nie tak w tym kodzie? Wpatruję się w niego dłuższy czas i nie widzę co powoduje błąd.

(Kod jest częścią większego zadania, wiem że błąd jest gdzieś w tym miejscu bo po podmianie na InsertionSort SPOJ akceptuje rozwiązanie)

void QuickSort(int* arr, int l, int r){
	if(l >= r) return;
	int
		i = l - 1,
		j = r + 1,
		pivot = arr[(l + r) / 2];

	while(true){
		while(arr[++i] < pivot);
		while(arr[--j] > pivot);

		if(i <= j) swap(arr[i], arr[j]);
		else break;
	}

	if(j > l) QuickSort(arr, l, j);
	if(i < r) QuickSort(arr, i, r);
}

 

Zaloguj lub zarejestruj się, aby odpowiedzieć na to pytanie.

Podobne pytania

+1 głos
1 odpowiedź 373 wizyt
pytanie zadane 27 czerwca 2020 w C i C++ przez Marcinuq Użytkownik (690 p.)
0 głosów
1 odpowiedź 867 wizyt
pytanie zadane 23 kwietnia 2020 w C i C++ przez Rrafał98 Nowicjusz (240 p.)
0 głosów
1 odpowiedź 785 wizyt
pytanie zadane 28 marca 2020 w C i C++ przez wall7489 Obywatel (1,280 p.)

93,742 zapytań

142,680 odpowiedzi

323,299 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.

...