Tak dla formalności pochwalę się jeszcze napisanym kodem, z funkcją zarówno sortującą bąbelkowo jak i przez wstawianie ;)
//Dwie funkcje sortujące - jedna bąbalkowo, druga przez wstawianie
#include <iostream>
#include <conio.h>
#include <ctime>
using namespace std;
int x, odpowiedz;
void POKAZ(int tablica[], int rozmiar = x);
int LOSUJ(int min = 1, int max = 100);
void WPISZ(int tablica[], int rozmiar =x );
void SORTOWANIE_BABELKOWE_MALEJACO(int tablica[], int rozmiar = x);
void SORTOWANIE_BABELKOWE_ROSNACO(int tablica[], int rozmiar = x);
void SORTOWANIE_PRZEZ_WSTAWIANIE_MALEJACO(int tablica[], int rozmiar = x);
void SORTOWANIE_PRZEZ_WSTAWIANIE_ROSNACO(int tablica[], int rozmiar = x);
enum SORTOWANIE
{
BABELKOWE, PRZEZ_WSTAWIANIE
};
enum KOLEJNOSC
{
ROSNACO, MALEJACO
};
int main()
{
KOLEJNOSC decyzja;
SORTOWANIE decyzja2;
srand(static_cast<unsigned>(time(NULL)));
//Ustalanie rozmiaru tablicy
cout << "Podaj ilosc liczb ktore mam wylosowac: " << endl;
cin >> x;
//Zdefiniowanie tablicy o okreslonym rozmiarze
int *tablica;
tablica = new int[x];
//Wylosowanie liczb i wpisanie ich do tablicy
cout << "Teraz wylosujemy liczby i wyswietlimy je na ekranie. Wcisnij dowolny klawisz" << endl;
getch();
WPISZ(tablica);
POKAZ(tablica);
cout << endl;
//Wybór metody sortowania i kolejności elementów
do{
cout << "Wybierz kolejnosc wedlug ktorej mam posortowac:\n1. Rosnaco\n2. Malejaco" << endl;
cin >> odpowiedz;
}while((odpowiedz!=1) && (odpowiedz != 2));
if(odpowiedz == 1) decyzja = ROSNACO;
else decyzja = MALEJACO;
cout << endl;
do{
cout << "Wybierz typ algorytmu sortowania ktore chcesz zastosowac:\n1. Babelkowe \n2. Przez wstawianie" << endl;
cin >> odpowiedz;
}while((odpowiedz!=1) && (odpowiedz != 2));
if(odpowiedz == 1) decyzja2 = BABELKOWE;
else decyzja2 = PRZEZ_WSTAWIANIE;
switch(decyzja)
{
case ROSNACO:
switch(decyzja2)
{
case BABELKOWE:
SORTOWANIE_BABELKOWE_ROSNACO(tablica);
break;
case PRZEZ_WSTAWIANIE:
SORTOWANIE_PRZEZ_WSTAWIANIE_ROSNACO(tablica);
break;
}
break;
case MALEJACO:
switch(decyzja2)
{
case BABELKOWE:
SORTOWANIE_BABELKOWE_MALEJACO(tablica);
break;
case PRZEZ_WSTAWIANIE:
SORTOWANIE_PRZEZ_WSTAWIANIE_MALEJACO(tablica);
break;
}
break;
}
//Wyświetlenie wyników pracy programu
cout << "Teraz wyswietlimy liczby posortowane " << endl;
getch();
POKAZ(tablica);
cout << endl;
delete[] tablica;
system("pause");
return 0;
}
void POKAZ(int tablica[], int rozmiar)
{
for(int i = 0; i < rozmiar; i++)
{
cout << tablica[i] << " ";
}
}
int LOSUJ(int min, int max)
{
return rand() % (max - min + 1) + min;
}
void WPISZ(int tablica[], int rozmiar)
{
for(int i = 0; i < rozmiar; i ++)
{
tablica[i] = LOSUJ();
}
}
/***************Sortowanie bąbelkowe*********************************/
void SORTOWANIE_BABELKOWE_ROSNACO(int tablica[], int rozmiar)
{
for(int i = 1; i < rozmiar; i ++)
{
for(int j = i; j > 0; j --)
{
if(tablica[j] < tablica[j-1])
{
int temp = tablica[j];
tablica[j] = tablica[j-1];
tablica[j-1] = temp;
}
}
}
}
void SORTOWANIE_BABELKOWE_MALEJACO(int tablica[], int rozmiar)
{
for(int i = 1; i < rozmiar; i ++)
{
for(int j = i; j > 0; j --)
{
if(tablica[j] > tablica[j-1])
{
int temp = tablica[j];
tablica[j] = tablica[j-1];
tablica[j-1] = temp;
}
}
}
}
//*******************************************************************
/***************Sortowanie przez wstawianie*********************************/
void SORTOWANIE_PRZEZ_WSTAWIANIE_ROSNACO(int tablica[], int rozmiar)
{
for(int i = 1; i < rozmiar; i++)
{
int element = tablica[i];
int j = i - 1;
while((j>=0) && (element < tablica[j]))
{
tablica[j+1] = tablica[j];
j--;
}
tablica[j+1] = element;
}
}
void SORTOWANIE_PRZEZ_WSTAWIANIE_MALEJACO(int tablica[], int rozmiar)
{
for(int i = 1; i < rozmiar; i++)
{
int element = tablica[i];
int j = i - 1;
while((j>=0) && (element > tablica[j]))
{
tablica[j+1] = tablica[j];
j--;
}
tablica[j+1] = element;
}
}
//*************************************************************************