Witam
Mam napisać program który ma obliczyć czas działania dwóch sortowań oraz dwóch porównań.
Przykładowo podając rozmiar tablicy jako 100 , po kompilacji wyświetla się że czas działania dla dwóch sortowań i wyszukiwani jest identyczny a raczej tak nie powinno być(czasem występuje różnica 0.0001-2 sek).Próbowałem wielu sposobów aby to naprawić lecz żaden nie pomógł.Problem pojawia się również gdy podając rozmiar tablicy który wynosi 1000 lub więcej, program pokazuje wynik czasowy tylko dla pierwszego sortowania a reszty jakby nie widział. Co musiałbym zmienić żeby program działał tak jak powinien?
#include <iostream>
#include <iomanip>
#include <cstdlib>
#include <time.h>
int x;
using namespace std;
void sortowanie(int l,int p)
{
int tab[x];
int i,j,pt;
i = (l+p)/2;
pt=tab[i]; tab[i] = tab[p];
for(j=i=p; i<p;i++)
if(tab[i]<pt)
{
swap(tab[i],tab[j]);
j++;
}
tab[p]=tab[j];tab[j]=pt;
if(l < j - 1) sortowanie(l, j - 1);
if(j + 1 < p) sortowanie(j + 1, p);
}
int szukanie(int ll,int pp,long sz)
{
int tab[x];
int m;
while(ll<=pp)
{
m=(ll+pp)/2;
if (tab[m] == sz)
return m;
if(tab[m]>sz)
pp=m-1;
else
ll=m+1;
}
}
int main()
{
cout<<"podaj ilosc elementow tablicy";
cin>>x;
clock_t start,end;
clock_t start1;
clock_t end1;
clock_t start2;
clock_t end2;
int tab[x];
srand(time(NULL));
for(int i=0; i<x; i++)
{
tab[i]=rand()%100;
}
start1=clock();
for (int i=0; i<x; i++)
{
for (int j=0; j<x; j++)
{
if (tab[j]>tab[j+1])
{
swap(tab[j], tab[j+1]);
}
}
}
end1=clock();
float czas1=(end1-start1/CLOCKS_PER_SEC)/1000.0;
cout<<"czas dla sortowania prostego :"<<czas1<<"sek";
cout<<endl;
start=clock();
sortowanie(0,x - 1);
end=clock();
float czas=(end-start/CLOCKS_PER_SEC)/1000.0;
cout<<"czas dla sortowania zlozonego"<<czas<<"sek"<<endl;
cout<<endl;
int s=15;
start2=clock();
for(int i = 0; i < x; i++)
{
if(tab[i] == s) break;
}
end2=clock();
float czas2=(end2-start2/CLOCKS_PER_SEC)/1000.0;
cout<<"czas dla wyszukiwania liniowego : "<<czas2<<"sek"<<endl;
clock_t start3;
clock_t end3;
int sz=13;
start3=clock();
szukanie(0,x-1,sz);
end3=clock();
double czas3=(end3-start3/CLOCKS_PER_SEC)/1000.0;
cout<<"czas dla wyszukiwania binarnego : "<<czas3<<"sek";
return 0;
}