Advertisement
b0b3kpl

Sortowanie z klasa

Sep 5th, 2016
165
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.39 KB | None | 0 0
  1. //Rozne typy sortowania z wykorzystaniem klas
  2.  
  3. #include <iostream>
  4. #include <string>
  5.  
  6. using namespace std;
  7.  
  8. //Abstrakcyjna klasa Sortowanie
  9. class Sortowanie
  10. {
  11. public:
  12.     virtual void sortuj()=0;
  13. };
  14.  
  15. class Bubblesort :public Sortowanie
  16. {
  17.     int ilosc
  18.     int *tbl
  19.  
  20. public:
  21.  
  22.     Bubblesort (int ile, int *tab)
  23.     {
  24.         ilosc=ile;
  25.         *tbl=*tab;
  26.     }
  27.  
  28.     virtual void sortuj(int *tbl, int ilosc)
  29.     {
  30.         for (int i=0; i<ilosc; i++)
  31.         {
  32.             for (int j=(ilosc-1); j>=1; j--)
  33.             {
  34.                 if (tbl[j]<tbl[j-1])
  35.                 {
  36.                     int bufor;
  37.                     bufor=tbl[j-1];
  38.                     tbl[j-1]=tbl[j];
  39.                     tbl[j]=bufor;
  40.                 }
  41.             }
  42.         }
  43.     }
  44. };
  45.  
  46. class Quicksort :public Sortowanie
  47. {
  48.     int ilosc
  49.     int *tbl
  50.  
  51.  
  52. public:
  53.  
  54.     Quicksort (int ile, int *tab)
  55.     {
  56.         ilosc=ile;
  57.         *tbl = *tab;
  58.     }
  59.  
  60.     virtual void sortuj(int *tbl, int ilosc)
  61.     {
  62.         int v = tbl[(lewy + prawy) / 2];
  63.         int i, j, x;
  64.         i = lewy;
  65.         j = prawy;
  66.         do
  67.         {
  68.             while (tbl[i]<v) i++;
  69.             while (tbl[j]>v) j--;
  70.             if (i <= j)
  71.             {
  72.                 x = tvl[i];
  73.                 tbl[i] = tbl[j];
  74.                 tbl[j] = x;
  75.                 i++;
  76.                 j--;
  77.             }
  78.         } while (i <= j);
  79.  
  80.         if (j>lewy) quicksort(tbl, lewy, j);
  81.         if (i<prawy) quicksort(tbl, i, prawy);
  82.     }
  83. };
  84.  
  85. class Selectsort :public Sortowanie
  86. {
  87.     int ilosc;
  88.     int *tbl;
  89.  
  90.  
  91. public:
  92.  
  93.     Selectsort(int ile, int *tab)
  94.     {
  95.         ilosc = ile;
  96.         *tbl = *tab;
  97.     }
  98.  
  99.     virtual void sortuj(int *tbl, int ilosc)
  100.     {
  101.         int ni = 0, buf;
  102.         for (int i = 0; i<n; i++)
  103.         {
  104.             for (int j = i + 1; j<n; j++)
  105.             {
  106.                 if (tab[j] <= tab[ni]) ni = j;
  107.             }
  108.  
  109.             buf = tbl[i];
  110.             tbl[i] = tbl[ni];
  111.             tbl[ni] = buf;
  112.         }
  113.     }
  114. };
  115.  
  116. int ile;
  117.  
  118. int main()
  119. {
  120.     cout << "Ilosc liczb do posortowania:";
  121.     cin >>ile;
  122.  
  123.     int *tablica;
  124.     tablica = new int [ile];
  125.  
  126.     srand(time(NULL));
  127.     for (int i=0; i<ile; i++)
  128.     {
  129.         tablica[i] = rand()%1000000+1;
  130.     }
  131.  
  132.     cout<<endl;
  133.  
  134.     Bubblesort bub(ile, *tablica);
  135.     Quicksort qui(ile, *tablica);
  136.     Selectsort sel(ile, *tablica);
  137.  
  138.     Sortowanie *wsk;
  139.  
  140.     //wskaznik wybiera obiekt klasy pochodnej w zaleznosci od wielkosci tablicy do sortowania
  141.  
  142.  
  143.     if (ile <= 100) wsk = &bub;
  144.     if (100 < ile && <= 1000) wsk = &sel;
  145.     if (ile > 1000) wsk = &qui;
  146.  
  147.     wsk->sortuj();
  148.  
  149.     delete [] tablica;
  150.  
  151.     return 0;
  152. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement