Advertisement
Guest User

Untitled

a guest
Oct 25th, 2016
49
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.91 KB | None | 0 0
  1. #include <iostream>
  2.  
  3. using namespace std;
  4.  
  5.  
  6. template <class T> class c_klasa {
  7.  
  8. public:
  9. T tab[100];
  10.  
  11. template <typename M> M fill_table(M zm){
  12.  
  13. for(M i = 0; i < zm;i++){
  14.  
  15. cout<<"podaj element"<<endl;
  16.  
  17. cin>>tab[i];
  18. }
  19.  
  20. };
  21.  
  22. template <typename M> M sort_bub(M zm) {
  23. cout<<"bubble sort"<<endl;
  24. M tmp;
  25. M zmm = zm-1;
  26. M zamiana;
  27. while (true) // petla nieskonczona - wyjscie breakem
  28. {
  29. zamiana=false;
  30. for (M i=0;i<zmm;i++) // sprawdzamy tablice od poczatku
  31. {
  32. if (tab[i]>tab[i+1]) // jezeli poprzedni element jest wiekszy to zamien
  33. {
  34. zamiana=true; // sygnalizujemy zmiane
  35. tmp=tab[i];
  36. tab[i]=tab[i+1];
  37. tab[i+1]=tmp;
  38. }
  39. }
  40. if (!zamiana) // jezeli nie bylo zmian to koniec sortowania - wyjscie z petli while
  41. break;
  42. }
  43.  
  44. for(int i = 0; i < zm;i++)cout<<tab[i]<<" ";
  45. cout<<endl;
  46.  
  47. };
  48.  
  49. template <typename M> M sort_insert(M zm) {
  50. cout<<"insetrion sort"<<endl;
  51.  
  52. M tmp ,i ,j;
  53.  
  54. for (i = 1; i < zm; i++)
  55. {
  56. tmp = tab[i];
  57. for (j = i-1; j >= 0; j--)
  58. {
  59. if (tmp < tab[j])
  60. tab[j+1] = tab[j];
  61. else
  62. break;
  63. }
  64. tab[j+1] = tmp;
  65. }
  66.  
  67.  
  68.  
  69. for(int i = 0; i < zm;i++) cout<<tab[i]<<" ";
  70. cout<<endl;
  71. };
  72.  
  73. template <typename M> M sort_q(M p, M r) // dzielimy tablice na dwie czesci, w pierwszej wszystkie liczby sa mniejsze badz rowne x, w drugiej wieksze lub rowne od x
  74. {
  75. M x = tab[p]; // obieramy x
  76. M i = p, j = r, w; // i, j - indeksy w tabeli
  77. while (true) // petla nieskonczona - wychodzimy z niej tylko przez return j
  78. {
  79. while (tab[j] > x) // dopoki elementy sa wieksze od x
  80. j--;
  81. while (tab[i] < x) // dopoki elementy sa mniejsze od x
  82. i++;
  83. if (i < j) // zamieniamy miejscami gdy i < j
  84. {
  85. w = tab[i];
  86. tab[i] = tab[j];
  87. tab[j] = w;
  88. i++;
  89. j--;
  90. }
  91. else // gdy i >= j zwracamy j jako punkt podzialu tablicy
  92. return j;
  93. }
  94. };
  95.  
  96. template <typename M> M sort_quick(M x,M zm) {
  97.  
  98. M tmp = zm+1;
  99. M q;
  100. if (x < zm)
  101. {
  102. q = sort_q(x,zm); // dzielimy tablice na dwie czesci; q oznacza punkt podzialu
  103. sort_quick(x, q); // wywolujemy rekurencyjnie quicksort dla pierwszej czesci tablicy
  104. sort_quick(q+1, zm); // wywolujemy rekurencyjnie quicksort dla drugiej czesci tablicy
  105. }
  106. else
  107. { cout<<"quick sort"<<endl;
  108. for(int k = 0; k < tmp;k++) cout<<tab[k]<<" ";
  109. cout<<endl;
  110. }
  111.  
  112.  
  113.  
  114.  
  115. };
  116.  
  117. };
  118.  
  119.  
  120. int main()
  121. {
  122. cout<<"SORTOWANIE"<<endl;
  123. int c = 5,e;
  124. while(c){
  125.  
  126. cout<<"podaj interesujacy cie typ danych"<<endl;
  127.  
  128. cout<<"[1] int "<<endl;
  129. //cout<<"[2] string "<<endl;
  130. cout<<"[3] double "<<endl;
  131. cout<<"[4] char "<<endl;
  132. cout<<"[0] wyjdz"<<endl;
  133.  
  134. cin>>c;
  135.  
  136. switch(c){
  137.  
  138. case 1:
  139. c_klasa<int> kochamtrap;
  140.  
  141. cout<<"podaj ilosc liczb"<<endl;
  142.  
  143. cin>>e;
  144.  
  145. kochamtrap.fill_table(e);
  146. kochamtrap.sort_bub(e);
  147. kochamtrap.sort_insert(e);
  148. kochamtrap.sort_quick(0,e-1);
  149. break;
  150.  
  151. case 3:
  152. c_klasa<double> kochamtrap1;
  153.  
  154. cout<<"podaj ilosc liczb"<<endl;
  155.  
  156. cin>>e;
  157.  
  158. kochamtrap1.fill_table(e);
  159. kochamtrap1.sort_bub(e);
  160. kochamtrap1.sort_insert(e);
  161. //kochamtrap1.sort_quick(0,e-1);
  162. break;
  163.  
  164. /*case 2:
  165. c_klasa<string> kochamtrap2;
  166.  
  167. cout<<"podaj ilosc liczb"<<endl;
  168.  
  169. cin>>e;
  170.  
  171. kochamtrap2.fill_table(e);
  172. kochamtrap2.sort_bub(e);
  173. kochamtrap2.sort_insert(e);
  174. kochamtrap2.sort_quick(0,e-1);
  175. break;
  176.  
  177. */
  178. }
  179.  
  180. }
  181.  
  182. return 0;
  183. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement