Witam mam za zadanie napisać algorytm sortowania Shella oraz sortowanie przez scalanie (ale najpierw zajmijmy się tym 1), który będzie również podawał czas sortowania. Następnie muszę zrobić w excelu na podstawie danych z sortowania wykres t-czasu od n-rozmiaru danych(ilość liczb do sortowania). Dane do excela mogę przenieść ręcznie, ale chodzi mi o to aby program automatycznie zapisywał te dane do excela ( klasa ofstream?? ). Proszę o pomoc z tym zapisywaniem danych oraz opinie na temat mojego kodu sortowania coś zmienić/poprawić, czy funkcja mierząca czas sortowania jest w odpowiednim miejscu?
#include <iostream>
#include <math.h>
#include <iomanip>
#include <ctime>
#include <cstdlib>
#include <cstdio>
using namespace std;
int main()
{
int dl,i,j,liczba,ile,n;
cout << "Sortowanie algorytm Shella";
cout<<"\nPodaj ile liczb chcesz posortowac: ";
cin>>ile;
int *tablica=new int[ile];
cout<<"\nPodaj maksymalna liczbe w zbiorze: ";
cin>>n;
cout<<"\n\n";
system("pause");
system("cls");
srand((unsigned)time(NULL));
for(i = 0; i < ile; i++)
tablica[i] = rand() % n + 1;
cout<<"\n\n\t\t Zbior "<<ile<<" liczb\n\n";
cout<<"\n\n";
system("pause");
system("cls");
for(dl = 1; dl < ile; dl = 3 * dl + 1);
dl /= 9;
clock_t s, f;
double czas=0;
s = clock();
while(dl)
{
for(j = ile - dl - 1; j >= 0; j--)
{
liczba = tablica[j];
i = j + dl;
while((i < ile) && (liczba > tablica[i]))
{
tablica[i - dl] = tablica[i];
i += dl;
}
tablica[i - dl] = liczba;
}
dl /= 3;
}
cout << "\n\n\t\tZbior "<<ile<< " liczb posortowany za pomoca algorytmu Shella\n\n";
for(i = 0; i < ile; i++)
cout << setw(5) << tablica[i];
cin.ignore();
getchar();
f = clock();
czas = (double)(f - s) / (double)(CLOCKS_PER_SEC);
cout << czas << endl;
system ("PAUSE");
}