Facebook
From Eratic Ostrich, 7 Years ago, written in C++.
Embed
Download Paste or View Raw
Hits: 280
  1. #include <iostream>
  2.  
  3. using namespace std;
  4. int *tab, *tab2;
  5.  
  6. void merge(int start_1, int koniec_1, int start_2, int koniec_2){
  7.       for(int i = start_1; i <= koniec_2; i++){
  8.               tab2[i] = tab[i];
  9.       }
  10.  
  11.       int i = start_1;
  12.       int j = start_2;
  13.       int k = start_1;
  14.  
  15.       while(k < koniec_2){
  16.               while(i <= koniec_1 && j <= koniec_2){
  17.                       if(tab2[i] <= tab2[j]){
  18.                               tab[k++] = tab2[j++];
  19.                       }else{
  20.                               tab[k++] = tab2[i++];
  21.                       }
  22.               }
  23.               while(i <= koniec_1){
  24.                       tab[k++] = tab2[i++];
  25.               }
  26.               while(j <= koniec_2){
  27.                       tab[k++] = tab2[j++];
  28.               }
  29.       }
  30. }
  31.  
  32. void merge_sort(int start, int koniec){
  33.       if(start < koniec){
  34.               int m = (start + koniec) / 2;
  35.  
  36.               merge_sort(start, m);
  37.               merge_sort(m + 1, koniec);
  38.  
  39.               merge(start, m, m + 1, koniec);
  40.       }
  41. }
  42.  
  43. int main(){
  44.       ios_base::sync_with_stdio(false);
  45.       int z;
  46.       cin >> z;
  47.  
  48.       while(z--){
  49.               int n, k;
  50.               cin >> n >> k;
  51.  
  52.               tab = new int[n + 1];
  53.               tab2 = new int[n + 1];
  54.  
  55.               for(int i = 1; i <= n; i++){
  56.                       cin >> tab[i];
  57.               }
  58.  
  59.               merge_sort(1, n);
  60.  
  61.               for(int i = 1; i <= n; i++){
  62.                       cout << tab[i] << " ";
  63.               }
  64.               cout << endl;
  65.  
  66.               delete [] tab;
  67.               delete [] tab2;
  68.       }
  69.       return 0;
  70. }