Witam. Mam problem z kodem. Potrzebuje programu który posortuje mi tablicę dwoma metodami i wypiszę czas sortowania.
Tylko coś mi nie bardzo chce działać. Pierwszy problem miałem z printf/scanf na visualu, ale z tym poradziłem sobie dając w ustawieniach SDL checks > NO
Drugi problem zaczyna mi się z czasami. Nie liczy mi ich.
Proszę o wybaczenie, ale nie jestem dobry w C++ :(
#include <iostream>
#include <time.h>
#include <windows.h>
using namespace std;
int ile;
clock_t start, stop;
double czas;
double czaslicz1;
double czaslicz2;
void sortowanie_babelkowe(int* tab, int n)
{
for (int i = 1; i < n; i++)
{
for (int j = n - 1; j >= 1; j--)
{
if (tab[j] < tab[j - 1])
{
swap(tab[j], tab[j - 1]);
}
}
}
}
void sortowanie_kopcowe(int* tablica, int rozmiar)
{
int i, j;
for (int m = 2; m <= rozmiar; m++)
{
i = m;
j = i / 2;
while ((tablica[i] > tablica[j]) && (j > 0))
{
swap(tablica[i], tablica[j]);
i = j;
j = i / 2;
}
}
}
int main()
{
printf("Porownanie czasow sortowania \nUwaga pierwsza tablica zostanie wyswietlona oraz efekt sortowania\nTablice zostana wylosowane z liczb od 1 do 100000\n\n");
for (int c = 1; c < 5; c++)
{
printf("Podaj wielkosc tablicy: %d ", c);
scanf("%d", &ile);
int* tablica;
tablica = new int[ile];
int* tablica2;
tablica2 = new int[ile];
srand(time(NULL));
for (int i = 0; i < ile; i++)
{
tablica[i] = rand() % 100000 + 1;
}
for (int i = 0; i < ile; i++)
{
tablica2[i] = tablica[i];
}
if (c == 1)
{
printf("\nTabela przed posortowaniem \n");
for (int i = 0; i < ile; i++)
{
cout << tablica[i] << " ";
}
}
printf("\n\n\nSortowanie babelkowe...\n");
start = clock();
sortowanie_babelkowe(tablica, ile);
stop = clock();
czas = (double)(stop - start) / CLOCKS_PER_SEC;
printf("\nCzas sortowania babelkowego: %f", czas, "s\n");
czaslicz1 += czas;
if (c == 1)
{
printf("\nTabela po sortowaniu babelkowym: \n");
for (int i = 0; i < ile; i++)
{
cout << tablica[i] << " ";
}
}
printf("\n\n\nSortowanie kopcowe...\n");
start = clock();
sortowanie_kopcowe(tablica2, ile);
stop = clock();
czas = (double)(stop - start) / CLOCKS_PER_SEC;
printf("\nCzas sortowania kopcowego: %f", czas, "s\n");
czaslicz2 += czas;
if (c == 1)
{
printf("\nTabela po sortowaniu kopcowym \n");
for (int i = 0; i < ile; i++)
{
cout << tablica[i] << " ";
}
}
printf("\n\n\n");
delete[] tablica;
delete[] tablica2;
if (c == 4)
{
printf("Sredni czas sortowania metoda babelkowego wszystkich tabel to: %f \n", czaslicz1 / 4);
printf("Sredni czas sortowania metoda kopcowe wszystkich tabel to: %f \n", czaslicz2 / 4);
}
}
return 0;
}