fork download
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. class Sorting{
  4. int n;
  5. int *arr;
  6. public:
  7. Sorting(int n,int p[]){
  8. this->n = n;
  9. arr = new int[n];
  10. for(int i=0;i<n;i++){
  11. arr[i] = p[i];
  12. }
  13. }
  14. void printArray(){
  15. for(int i=0;i<n;i++){
  16. cout << arr[i] << " ";
  17. }
  18. cout <<"\n";
  19. }
  20. void BubbleSort(){
  21. for(int i=0;i<n;i++){
  22. for(int j=i+1;j<n;j++){
  23. if(arr[i] > arr[j]){
  24. swap(arr[i],arr[j]);
  25. }
  26. }
  27. }
  28. }
  29. void SelectionSort(){
  30. for(int i=0;i<n;i++){
  31. int min_val = arr[i];
  32. int idx = i;
  33. for(int j=i+1;j<n;j++){
  34. if(arr[j] < min_val){
  35. min_val = arr[j];
  36. idx = j;
  37. }
  38. }
  39. swap(arr[i],arr[idx]);
  40. }
  41. }
  42. void InsertionSort(){
  43. for(int i=1;i<n;i++){
  44. int j = i - 1;
  45. int k = i;
  46. while(j >= 0){
  47. if(arr[k] < arr[j]){
  48. swap(arr[k],arr[j]);
  49. k = j;
  50. }
  51. j--;
  52. }
  53. }
  54. }
  55. void merge(int i,int j,int k){
  56. int t[k-i+1];
  57. int i1=i,i2=j+1,k1=0;
  58. while(i1 <= j && i2 <= k){
  59. if(arr[i1] < arr[i2]){
  60. t[k1] = arr[i1];
  61. k1++;
  62. i1++; // 2 5 1 16 1 17 3 18
  63. }
  64. else{
  65. t[k1] = arr[i2];
  66. k1++;
  67. i2++;
  68. }
  69. }
  70. while(i1 <= j){
  71. t[k1] = arr[i1];
  72. k1++;
  73. i1++;
  74. }
  75. while (i2 <= k)
  76. {
  77. t[k1] = arr[i2];
  78. k1++;
  79. i2++;
  80. }
  81. for(int idx = i;idx <= k ;idx++){
  82. cout << t[idx-i] <<" ";
  83. arr[idx] = t[idx - i];
  84. }
  85. cout << "\n";
  86. }
  87. void MergeSort(int l,int r){
  88. if(l < r){
  89. int mid = l+(r-l)/2;
  90. MergeSort(l,mid);
  91. MergeSort(mid + 1,r);
  92. merge(l,mid,r);
  93. }
  94. }
  95. };
  96. int main(){
  97. int n;
  98. cin >> n;
  99. int a[n];
  100. for(int i=0;i<n;i++) cin >> a[i];
  101. Sorting s(n,a);
  102. s.MergeSort(0,n-1);
  103. s.printArray();
  104. return 0;
  105. }
Success #stdin #stdout 0s 4552KB
stdin
7
5 1 16 1 17 3 18
stdout
1 5 
1 16 
1 1 5 16 
3 17 
3 17 18 
1 1 3 5 16 17 18 
1 1 3 5 16 17 18