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);
}