Witam
Chciałem zbadać czasy różnych sortowań, w tym celu do każdego sortowania chciałem liczyć średni czas z kilku wykonań przy losowych danych i przy danych ilościach elementów. I tu moje pytanie, jak powinienem czyścić pamięć po każdym sortowaniu, by te czasy się nie wydłużały ze względu na zajętą pamięć? Chciałbym ponownie losować liczby i ponownie je posortować zachowując z poprzedniego sortowania jedynie czas do średnie.
Tak wygląda jedna z funkcji losowania i sortowania
const int N=50000;
int tab[N],i;
void los(int N, int tab[])
{
srand(time(0));
for(int i=0; i<N; i+=1)
{tab[i]=rand()%10;}
}
void pokaz(int N, int tab[])
{
for(int i=1;i<N;i+=1)
{cout<<tab[i];}
}
void Heapify(int tab[], int i, int N)
{
int l,r,largest,pom;
l=2*i;
r=(2*i)+1;
if ( (l<=N) && (tab[l]>tab[i]) ) largest=l;
else largest=i;
if ( (r<=N) && (tab[r]>tab[largest]) ) largest=r;
if (largest!=i)
{
pom=tab[i];
tab[i]=tab[largest];
tab[largest]=pom;
Heapify(tab,largest,N);
}
}
void BuildHeap(int tab[])
{
for(i=N/2; i>=1; i-=1)
{
Heapify(tab,i,N);
}
}
void HeapSort(int tab[])
{
int i,heapsize,pom;
BuildHeap(tab);
heapsize=N;
for(i=N; i>=2; i-=1)
{
pom=tab[1];
tab[1]=tab[i];
tab[i]=pom;
heapsize-=1;
Heapify(tab,1,heapsize);
}
}
Czy mogę liczyć na jakieś w miarę proste do zaimplementowania rozwiązanie?