Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //Rozne typy sortowania z wykorzystaniem klas
- #include <iostream>
- #include <string>
- using namespace std;
- //Abstrakcyjna klasa Sortowanie
- class Sortowanie
- {
- public:
- virtual void sortuj()=0;
- };
- class Bubblesort :public Sortowanie
- {
- int ilosc
- int *tbl
- public:
- Bubblesort (int ile, int *tab)
- {
- ilosc=ile;
- *tbl=*tab;
- }
- virtual void sortuj(int *tbl, int ilosc)
- {
- for (int i=0; i<ilosc; i++)
- {
- for (int j=(ilosc-1); j>=1; j--)
- {
- if (tbl[j]<tbl[j-1])
- {
- int bufor;
- bufor=tbl[j-1];
- tbl[j-1]=tbl[j];
- tbl[j]=bufor;
- }
- }
- }
- }
- };
- class Quicksort :public Sortowanie
- {
- int ilosc
- int *tbl
- public:
- Quicksort (int ile, int *tab)
- {
- ilosc=ile;
- *tbl = *tab;
- }
- virtual void sortuj(int *tbl, int ilosc)
- {
- int v = tbl[(lewy + prawy) / 2];
- int i, j, x;
- i = lewy;
- j = prawy;
- do
- {
- while (tbl[i]<v) i++;
- while (tbl[j]>v) j--;
- if (i <= j)
- {
- x = tvl[i];
- tbl[i] = tbl[j];
- tbl[j] = x;
- i++;
- j--;
- }
- } while (i <= j);
- if (j>lewy) quicksort(tbl, lewy, j);
- if (i<prawy) quicksort(tbl, i, prawy);
- }
- };
- class Selectsort :public Sortowanie
- {
- int ilosc;
- int *tbl;
- public:
- Selectsort(int ile, int *tab)
- {
- ilosc = ile;
- *tbl = *tab;
- }
- virtual void sortuj(int *tbl, int ilosc)
- {
- int ni = 0, buf;
- for (int i = 0; i<n; i++)
- {
- for (int j = i + 1; j<n; j++)
- {
- if (tab[j] <= tab[ni]) ni = j;
- }
- buf = tbl[i];
- tbl[i] = tbl[ni];
- tbl[ni] = buf;
- }
- }
- };
- int ile;
- int main()
- {
- cout << "Ilosc liczb do posortowania:";
- cin >>ile;
- int *tablica;
- tablica = new int [ile];
- srand(time(NULL));
- for (int i=0; i<ile; i++)
- {
- tablica[i] = rand()%1000000+1;
- }
- cout<<endl;
- Bubblesort bub(ile, *tablica);
- Quicksort qui(ile, *tablica);
- Selectsort sel(ile, *tablica);
- Sortowanie *wsk;
- //wskaznik wybiera obiekt klasy pochodnej w zaleznosci od wielkosci tablicy do sortowania
- if (ile <= 100) wsk = &bub;
- if (100 < ile && <= 1000) wsk = &sel;
- if (ile > 1000) wsk = &qui;
- wsk->sortuj();
- delete [] tablica;
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement