Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<bits/stdc++.h>
- using namespace std;
- int tab[1000] , t[1000];
- void merg(int pocz, int sr, int kon)
- {
- int i,j,q;
- for (i=pocz; i<=kon; i++)
- {
- t[i]=tab[i]; // Skopiowanie danych do tablicy pomocniczej
- }
- i=pocz; j=sr+1; q=pocz; // Ustawienie wskaźników tablic
- while (i<=sr && j<=kon)
- { // Przenoszenie danych z sortowaniem ze zbiorów pomocniczych do tablicy głównej
- if (t[i]<t[j])
- tab[q++]=t[i++];
- else
- tab[q++]=t[j++];
- }
- while (i<=sr)
- {
- tab[q++]=t[i++]; // Przeniesienie nie skopiowanych danych ze zbioru pierwszego w przypadku, gdy drugi zbiór się skończył
- }
- }
- /* Procedura sortowania tab[pocz...kon] */
- void mergesort(int pocz, int kon)
- {
- int sr;
- if (pocz<kon)
- {
- sr=(pocz+kon)/2;
- mergesort(pocz, sr); // Dzielenie lewej części
- mergesort(sr+1, kon); // Dzielenie prawej części
- merg(pocz, sr, kon); // Łączenie części lewej i prawej
- }
- }
- int a , i;
- int main()
- {
- while(true)
- {
- cin >> a;
- if(a == 0)
- {
- break;
- }
- tab[i] = a;
- i++;
- }
- mergesort(0 , i);
- for(int j = 1 ; j <= i ; j++)
- {
- cout << tab[j] << " ";
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement