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