quick sort

0

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 :/

0

pierwsze co widzę to srand(time(NULL)); - powinno być wywołane tylko raz w programie.

0

Hej wieeeelkie dzieki :D przez to mi sie przeladowywal stos :P wielkie dzieki za pomoc

1 użytkowników online, w tym zalogowanych: 0, gości: 1