Advertisement
Guest User

Untitled

a guest
Oct 22nd, 2019
98
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.29 KB | None | 0 0
  1. #include <iostream>
  2. #include <cstdio>
  3.  
  4. void merge(int array[], int first, int last) {
  5. int i = 0, j = 0;
  6. int result[last - first + 1];
  7. int mid = (first + last) / 2;
  8. while (first + i < mid && mid + j < last) {
  9. if (array[first + i] < array[mid + j]) {
  10. result[i + j] = array[first + i];
  11. i++;
  12. }
  13. else {
  14. result[i + j] = array[mid + j];
  15. j++;
  16. }
  17. }
  18. while (first + i < mid) {
  19. result[i + j] = array[first + i];
  20. i++;
  21. }
  22. while (mid + j < last) {
  23. result[i + j] = array[mid + j];
  24. j++;
  25. }
  26. for (int h = 0; h < i + j; h++) {
  27. array[first + h] = result[h];
  28. }
  29. }
  30.  
  31. void mergeSort(int* array, int first, int last) {
  32. if (first < last - 1) {
  33. mergeSort(array, first, (first + last) / 2);
  34. mergeSort(array, (first + last) / 2, last);
  35. merge(array, first, last);
  36. }
  37. }
  38.  
  39. int main() {
  40. int n;
  41. freopen("sort.in", "r", stdin);
  42. freopen("sort.out", "w", stdout);
  43. std::cin >> n;
  44. int arr[n];
  45. for (int i = 0; i < n; i++) {
  46. std::cin >> arr[i];
  47. }
  48. mergeSort(arr, 0, n);
  49. for (int i = 0; i < n; i++) {
  50. std::cout << arr[i] << " ";
  51. }
  52. fclose(stdout);
  53. return 0;
  54. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement