Advertisement
Guest User

Untitled

a guest
Oct 23rd, 2019
97
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.34 KB | None | 0 0
  1. #include<bits/stdc++.h>
  2.  
  3. using namespace std;
  4.  
  5. int tab[1000] , t[1000];
  6.  
  7. void merg(int pocz, int sr, int kon)
  8. {
  9.     int i,j,q;
  10.     for (i=pocz; i<=kon; i++)
  11.     {
  12.         t[i]=tab[i];  // Skopiowanie danych do tablicy pomocniczej  
  13.     }
  14.     i=pocz; j=sr+1; q=pocz;                 // Ustawienie wskaźników tablic
  15.     while (i<=sr && j<=kon)
  16.     {         // Przenoszenie danych z sortowaniem ze zbiorów pomocniczych do tablicy głównej
  17.         if (t[i]<t[j])
  18.         tab[q++]=t[i++];
  19.         else
  20.         tab[q++]=t[j++];
  21.     }
  22.     while (i<=sr)
  23.     {
  24.        tab[q++]=t[i++]; // Przeniesienie nie skopiowanych danych ze zbioru pierwszego w przypadku, gdy drugi zbiór się skończył
  25.     }
  26. }
  27.  
  28. /* Procedura sortowania tab[pocz...kon] */
  29. void mergesort(int pocz, int kon)
  30. {
  31.     int sr;
  32.     if (pocz<kon)
  33.     {
  34.         sr=(pocz+kon)/2;
  35.         mergesort(pocz, sr);    // Dzielenie lewej części
  36.         mergesort(sr+1, kon);   // Dzielenie prawej części
  37.         merg(pocz, sr, kon);   // Łączenie części lewej i prawej
  38.     }
  39. }
  40.  
  41.  
  42. int a , i;
  43.  
  44. int main()
  45. {
  46.     while(true)
  47.     {
  48.         cin >> a;
  49.         if(a == 0)
  50.         {
  51.             break;
  52.         }
  53.         tab[i] = a;
  54.         i++;
  55.     }
  56.     mergesort(0 , i);
  57.     for(int j = 1 ; j <= i ; j++)
  58.     {
  59.         cout << tab[j] << " ";
  60.     }
  61.  
  62. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement