fork download
  1. #include<iostream>
  2. #include<cstdlib>
  3. using namespace std;
  4.  
  5. int *pom;
  6.  
  7.  
  8. void scal(int tab[], int lewy, int srodek, int prawy)
  9. {
  10. int i, j;
  11.  
  12.  
  13. for(i = srodek + 1; i>lewy; i--)
  14. pom[i-1] = tab[i-1];
  15.  
  16.  
  17. for(j = srodek; j<prawy; j++)
  18. pom[prawy+srodek-j] = tab[j+1];
  19.  
  20.  
  21. for(int k=lewy;k<=prawy;k++)
  22. if(pom[j]<pom[i])
  23. tab[k] = pom[j--];
  24. else
  25. tab[k] = pom[i++];
  26. }
  27.  
  28.  
  29.  
  30. void sortowanie_przez_scalanie(int tab[],int lewy, int prawy)
  31. {
  32. //gdy mamy jeden element, to jest on już posortowany
  33. if(prawy<=lewy) return;
  34.  
  35. //znajdujemy srodek podtablicy
  36. int srodek = (prawy+lewy)/2;
  37.  
  38. //dzielimy tablice na częsć lewą i prawa
  39. sortowanie_przez_scalanie(tab, lewy, srodek);
  40. sortowanie_przez_scalanie(tab, srodek+1, prawy);
  41.  
  42. //scalamy dwie już posortowane tablice
  43. scal(tab, lewy, srodek, prawy);
  44. }
  45.  
  46.  
  47.  
  48. int main()
  49. {
  50. int *tab,
  51. n; //liczba elementów tablicy
  52.  
  53. cin>>n;
  54. tab = new int[n]; //przydzielenie pamięci na tablicę liczb
  55. pom = new int[n]; //przydzielenie pamięci na tablicę pomocniczą
  56.  
  57. //wczytanie elementów tablicy
  58. for(int i=0;i<n;i++)
  59. cin>>tab[i];
  60.  
  61. //sortowanie wczytanej tablicy
  62. sortowanie_przez_scalanie(tab,0,n-1);
  63.  
  64. //wypisanie wyników
  65. for(int i=0;i<n;i++)
  66. cout<<tab[i]<<" ";
  67.  
  68. system("pause");
  69. return 0;
  70. }
Success #stdin #stdout #stderr 0s 16064KB
stdin
Standard input is empty
stdout
Standard output is empty
stderr
sh: 1: pause: not found