Witam, jestem aspirującym programistą... Wciągnęło mnie to na maksa i z zadaniami/programami jako tako problemów nie mam. Gorzej w momencie kiedy mam spojrzeć na nie od strony analitycznej/teoretycznej... Mianowicie. Napisałem taki sobie oto program, który ma sortować elementy i ku mojej uciesze działa... Cieszy mnie to bardziej, bo sam do tego doszedłem. Tu pojawia się jednak problem. Działa, ale nie potrafię nazwać tego algorytmu. Czy jest to sortowanie bąbelkowe czy przez wstawianie? I jakie są zasadnicze różnice między dwoma powyższymi? Z góry dziękuję za odpowiedź i pozdrawiam. Oto kod:
#include <iostream>
#include <ctime>
#include <conio.h>
using namespace std;
int LOSUJ(int min = 1, int max = 20);
void WYPELNIANIE_TABLICY(int tablica[], int rozmiar);
void WYPIS(int tablica[], int rozmiar);
void SORT(int tablica[], int rozmiar);
int main()
{
srand(static_cast<int>(time(NULL)));
int x; //rozmiar tablicy
int *tablica;
cout << "Podaj rozmiar tablicy: ";
cin >> x;
tablica = new int [x];
WYPELNIANIE_TABLICY(tablica, x);
cout << "Wypisywanie obecnej zawartosci tablicy. Wcisnij klawisz" << endl;
getch();
WYPIS(tablica, x);
//Sortowanie
SORT(tablica, x);
cout << "Wypisywanie obecnej zawartosci tablicy po sortowaniu. Wcisnij klawisz" << endl;
getch();
WYPIS(tablica, x);
cout << endl;
delete[] tablica;
system("pause");
return 0;
}
int LOSUJ(int min, int max)
{
return rand() % (max - min + 1) + min;
}
void WYPELNIANIE_TABLICY(int tablica[], int rozmiar)
{
for(int i = 0; i < rozmiar; i++)
{
tablica[i] = LOSUJ();
}
}
void WYPIS(int tablica[], int rozmiar)
{
for(int i = 0; i < rozmiar; i++)
{
cout << tablica[i] << " ";
}
}
void SORT(int tablica[], int rozmiar)
{
for(int i =(rozmiar - 2); i >=0; i --)
{
int j = i;
int temp;
for(j; j < (rozmiar-1); j ++)
{
if(tablica[j] > tablica[j+1])
{
temp = tablica[j] ;
tablica[j] = tablica[j+1];
tablica[j+1] = temp;
}
}
}
}