Witam mam błąd w algorytmie quick sortu, otóż niektóre dane sortuje ok ale przy niektórych wyskakuje Stack overflow, teraz wyskoczył przy 300 tys danych, czy jest możliwe ze jest za dużo zagłębień rekurencyjnych?? Aczkolwiek wydaje mi się ze pamięci starcza :/ mój algorytm:
int quick_sort_chg(int to_sort[], int begin, int end, bool random_key)
{
int x, key;
if(!random_key)
x=to_sort[begin];
else
{
key=rand()%(end-begin+1)+begin;
x=to_sort[key];
}
//x=to_sort[begin];
while(true)
{
while(to_sort[end]>x)
end--;
while(to_sort[begin]<x)
begin++;
if(begin<end)
{
int tmp=to_sort[begin];
to_sort[begin]=to_sort[end];
to_sort[end]=tmp;
begin++;
end--;
}
else
return end;
}
}
void quick_sort_rec(int to_sort[], int begin, int end, bool random_key)
{
if(begin<end)
{
int x = quick_sort_chg(to_sort, begin, end, random_key);
quick_sort_rec(to_sort, begin, x, random_key);
quick_sort_rec(to_sort, x+1, end, random_key);
}
}