Witam na zajęcia mam przeprowadzic testy quick sort w 2 wariantach przy losowym kluczu oraz stalym (pierwszy element) napisalem soc takiego:
int quick_sort_chg(int to_sort[], int begin, int end, bool random_key)
{
srand(time(NULL));
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);
}
}
jak wywołuje dla stałego klucza działa ok a w momencie gdy ma losować klucz to wywala mi przeciążenie stosu :/ nie widzę żadnego błędu :( A i ważne jest to ze nie za każdym razem, tak jakby dla jakiegoś konkretnego klucza nie pasowało :/