sortowanie szybkie - Stack overflow

0

Witam, napisałem funkcję sortowania szybkiego, lecz po uruchomieniu programu wyskakuje komunikat Stack overflow i program staje po posortowaniu zaledwie 3 tablic (a pownien posortowac 10 tablic)
Z góry dziękuję za wszelką pomoc

int *szybkie(int *tab, int d, int g)
{

	int t,s,pom,i;
	//int d= 0;
	//int g = size - 1;
	if (d < g) {
		t = tab[d-1];   // {t jest kluczem osiowym}
		s = d;
		for (i = d+1; i <= g; i++)
		{    // { przemieszczanie elementów wokół klucza osiowego }
			if (tab[i-1] < t)
			{
				s = s + 1;
				pom = tab[s-1];
				tab[s-1] = tab[i-1];
				tab[i-1] = pom;
			};
		};
		pom = tab[d-1];
		tab[d-1] = tab[s-1];
		tab[s-1] = pom;

		szybkie(tab, d, s-1);    //{wywołania rekursywne dla obu części tablicy}
		szybkie(tab, s+1, g);
		
	};
	
	
	return tab;
	
}

main:

int main()
{
int z,b=1;
int size=N;

int a=1,j;
int *tab;
float srednia[4];
float sum=0,sr;

// float q,r,s,t,u;
//int i;

for(z=1;z<20;z++)
{
if(z==1)size=size;
else
size=2*size;

for(j=0; j<5; j++)
{
clock_t t;

// int f;
t = clock();
tab=start(size);

std::random_shuffle(tab, tab+N);

tab = szybkie(tab, 1, size);
//tab=bubblesort(tab,size);
//tab=insertSort(tab,size);
//tab=wybor(tab,size);
//tab = shell(tab, size);
weryfikacja(tab,size);

if (weryfikacja(tab, size) == 1);
//poprawne
else
	printf("  Sortowanie dziala niepoprawnien\n");


//for(i=0;i<N;i++)
//	printf("%d ", tab[i]);


t = clock() - t;
srednia[j]=((float)t)/CLOCKS_PER_SEC;
sum=sum+srednia[j];
free(tab);
};


 sr=sum/5;
 printf("Srednia pomiaru dla %i elementow to %f\n", size, sr);

}

getchar();

}

0

Na pewno wychodzisz poza zakres tablicy srednia.

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