Advertisement
filip710

AISP LV5

Jan 10th, 2017
121
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 3.92 KB | None | 0 0
  1.  
  2.  
  3. #pragma region library
  4. #include<iostream>
  5. #include<time.h>
  6. #include<Windows.h>
  7.  
  8. using namespace std;
  9. #pragma endregion
  10.  
  11. #pragma region prototipovi funkcija
  12. void dodaj_brojeve_u_polje(int V[], int n);
  13. void ispis_polja(int V[], int n);
  14.  
  15. void bubble_sort(int V[], int n);
  16.  
  17. void heap_sort(int V[], int n);
  18. void podesi(int V[], int n);
  19. void heapify(int V[], int n);
  20.  
  21. void merge_sort(int dg, int gg);
  22. void merge(int dg, int gg);
  23. #pragma endregion
  24.  
  25. const int MAXN = 100000000;
  26. int polje[MAXN];
  27.  
  28. int main() {
  29.     time_t t1, t2;
  30.     int ponovno_pokretanje;
  31.     int n;
  32.  
  33.     do {
  34.         system("cls");
  35.  
  36.         cout << "Broj elemenata polja [max 100 000 000]: "; cin >> n;
  37.  
  38.         //Bubble sort
  39.         dodaj_brojeve_u_polje(polje, n);
  40.         cout << "Sortiranje u tijeku... ";
  41.         t1 = clock();
  42.         bubble_sort(polje, n);
  43.         t2 = clock();
  44.         cout << "Bubble sort vrijeme u [ms]: " << t2 - t1 << endl;
  45.         //cout << "Polje sortirano pomocu Bubble sorta: "; ispis_polja(polje, n); cout << endl;
  46.  
  47.         //Heap sort
  48.         dodaj_brojeve_u_polje(polje, n);
  49.         cout << "Sortiranje u tijeku... ";
  50.         t1 = clock();
  51.         heap_sort(polje, n);
  52.         t2 = clock();
  53.         cout << "Heap sort vrijeme u [ms]: " << t2 - t1 << endl;
  54.         //cout << "Polje sortirano pomocu Heap sorta: "; ispis_polja(polje, n); cout << endl;
  55.  
  56.         //Merge sort
  57.         dodaj_brojeve_u_polje(polje, n);
  58.         cout << "Sortiranje u tijeku... ";
  59.         t1 = clock();
  60.         merge_sort(0, n-1);
  61.         t2 = clock();
  62.         cout << "Merge sort vrijeme u [ms]: " << t2 - t1 << endl;
  63.         //cout << "Polje sortirano pomocu Merge sorta: "; ispis_polja(polje, n); cout << endl;
  64.  
  65.         cout << endl;
  66.         cout << "Za ponovno pokretanje programa unesite [1]: "; cin >> ponovno_pokretanje;
  67.     } while (ponovno_pokretanje == 1);
  68.     return 0;
  69. }
  70.  
  71. #pragma region funkcije za rad sa poljem
  72. void dodaj_brojeve_u_polje(int V[], int n) {
  73.     for (int i = 0; i < n; i++)
  74.         V[i] = n - i;
  75. }
  76. //kraj funkcije
  77.  
  78. void ispis_polja(int V[], int n) {
  79.     for (int i = 0; i < n; i++)
  80.         cout << V[i] << " ";
  81. }
  82. //kraj funkcije
  83. #pragma endregion
  84.  
  85. #pragma region funkcija bubble_sort
  86. void bubble_sort(int V[], int n) {
  87.     bool zamjena;
  88.     int temp;
  89.  
  90.     do {
  91.         zamjena = false;
  92.        
  93.         for (int i = 1; i <= n - 1; i++) {
  94.             if (V[i-1] > V[i]) {
  95.                 temp = V[i-1];
  96.                 V[i-1] = V[i];
  97.                 V[i] = temp;
  98.                 zamjena = true;
  99.             }
  100.         }
  101.     } while (zamjena == true);
  102. }
  103. //kraj funkcije
  104. #pragma endregion
  105.  
  106. #pragma region funkcija heap_sort
  107. void heap_sort(int V[], int n) {
  108.     int i, t;
  109.  
  110.     heapify(V, n);
  111.    
  112.     for (i = n - 1; i > 0; i--) {
  113.         t = V[0];
  114.         V[0] = V[i];
  115.         V[i] = t;
  116.         podesi(V, i);
  117.     }
  118. }
  119. //kraj funkcije
  120.  
  121. void podesi(int V[], int n) {
  122.     int i, j, broj;
  123.     j = 0;
  124.     broj = V[j];
  125.     i = 2 * j + 1;
  126.    
  127.     while(i <= n - 1) {
  128.         if (i + 1 <= n - 1) {
  129.             if(V[i] < V[i+1])
  130.                 i++;
  131.         }
  132.  
  133.         if (broj < V[i]) {
  134.             V[j] = V[i];
  135.             j = i;
  136.             i = 2 * j + 1;
  137.         }
  138.         else
  139.             break;
  140.     }
  141.  
  142.     V[j] = broj;
  143. }
  144. //kraj funkcije
  145.  
  146. void heapify(int V[], int n) {
  147.     int k, i, j, broj;
  148.  
  149.     for (k = 1; k < n; k++) {
  150.         broj = V[k];
  151.         i = k;
  152.         j = (i - 1) / 2;
  153.        
  154.         while ((i > 0) && (broj > V[j])) {
  155.             V[i] = V[j];
  156.             i = j;
  157.             j = (i - 1) / 2;
  158.         }
  159.  
  160.         V[i] = broj;
  161.     }
  162. }
  163. //kraj funkcije
  164. #pragma endregion
  165.  
  166. #pragma region funkcija merge_sort
  167. void merge_sort(int dg, int gg) {
  168.     if (dg == gg) return;
  169.  
  170.     int s = (dg + gg) / 2;
  171.     merge_sort(dg, s);
  172.     merge_sort(s + 1, gg);
  173.     merge(dg, gg);
  174. }
  175. //kraj funkcije
  176.  
  177. void merge(int dg, int gg) {
  178.     int* T = new int [gg - dg + 1];
  179.     int s = (dg + gg) / 2;
  180.     int il = dg;
  181.     int id = s + 1;
  182.  
  183.     for (int i = 0; i < gg - dg + 1; i++) {
  184.         if ((il <= s) && (id <= gg)) {
  185.             if (polje[il] < polje[id]) {
  186.                 T[i] = polje[il];
  187.                 il = il + 1;
  188.             }
  189.             else {
  190.                 T[i] = polje[id];
  191.                 id = id + 1;
  192.             }
  193.         }
  194.         else {
  195.             if (il > s) {
  196.                 T[i] = polje[id];
  197.                 id = id + 1;
  198.             }
  199.             else {
  200.                 T[i] = polje[il];
  201.                 il = il + 1;
  202.             }
  203.         }
  204.     }
  205.  
  206.     for (int i = dg; i <= gg; i++)
  207.         polje[i] = T[i - dg];
  208.  
  209.     delete [] T;
  210. }
  211. //kraj funkcije
  212. #pragma endregion
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement