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 prawidłowa?
#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("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("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"); return 0; }