Cześć,
napisałem program z dynamiczną tablicą, do której przypisują się losowe liczby w zakresie od 1-1000. Następnie dana tablica jest sortowana metodą bąbelkową oraz wyświetlana jest posortowana tablica. Rozwiązałem ten problem metodą ze wskaźnikami oraz bez wskaźników, a także zmierzyłem czas działania poszczególnych metod. W teorii, metoda z wskaźnikami powinna być szybsza, a w moim przypadku, jest odwrotnie. Proszę o opinię czy jest taka sytuacja możliwa oraz czy coś źle zrobiłem. Z góry dziękuję.
#include <iostream>
#include <time.h>
#include <cstdlib>
using namespace std;
int fp(int *t, int ile);
void sort(int *t, int ile);
void swap(int *t, int ile);
clock_t start, stop;
double czaswsk, czasbwsk;
int main()
{
int n;
cout << "Ile liczb: ";
cin >> n;
srand(time(NULL));
int *tab;
tab=new int[n];
int *wsk;
wsk=tab;
for (int i=0; i<n;i++)
{
wsk[i]=(rand()%1000)+1;
}
start=clock();
sort(tab,n);
fp(tab,n);
delete[]tab;
cout << endl;
stop=clock();
czaswsk=((double)(stop-start)/CLOCKS_PER_SEC);
tab=new int[n];
for (int i=0; i<n;i++)
{
tab[i]=(rand()%1000)+1;
}
start=clock();
int tempo;
for(int i=0;i<n-1;i++)
{
for (int j=0;j<n-1-i;j++)
{
if(tab[j]>tab[j+1])
{
tempo=tab[j];
tab[j]=tab[j+1];
tab[j+1]=tempo;
}
}
}
for (int i=0;i<n;i++)
{
cout << tab[i] << " ";
}
delete[]tab;
cout << endl;
stop=clock();
czasbwsk=((double)(stop-start)/CLOCKS_PER_SEC);
cout << "Czas bez wskaznika: " << czasbwsk << "s\n";
cout << "Czas z wskaznikiem: " << czaswsk << "s";
return 0;
}
void swap(int *xp, int *yp)
{
int temp=*xp;
*xp=*yp;
*yp=temp;
}
void sort(int *t, int ile)
{
for (int i=0;i<ile-1;i++)
{
for(int j=0; j<ile-1-i;j++)
{
if(t[j]>t[j+1])
{
swap(t[j],t[j+1]);
}
}
}
}
int fp(int *t, int ile)
{
for(int i=0;i<ile;i++)
{
cout << t[i] << " ";
}
return 0;
}