TheAlgorithms/C++ 1.0.0
All the algorithms implemented in C++
Loading...
Searching...
No Matches
merge_sort.cpp
Go to the documentation of this file.
1
19#include <iostream>
20
36void merge(int *arr, int l, int m, int r) {
37 int i, j, k;
38 int n1 = m - l + 1;
39 int n2 = r - m;
40
41 int *L = new int[n1], *R = new int[n2];
42
43 for (i = 0; i < n1; i++) L[i] = arr[l + i];
44 for (j = 0; j < n2; j++) R[j] = arr[m + 1 + j];
45
46 i = 0;
47 j = 0;
48 k = l;
49 while (i < n1 || j < n2) {
50 if (j >= n2 || (i < n1 && L[i] <= R[j])) {
51 arr[k] = L[i];
52 i++;
53 } else {
54 arr[k] = R[j];
55 j++;
56 }
57 k++;
58 }
59
60 delete[] L;
61 delete[] R;
62}
63
74void mergeSort(int *arr, int l, int r) {
75 if (l < r) {
76 int m = l + (r - l) / 2;
77 mergeSort(arr, l, m);
78 mergeSort(arr, m + 1, r);
79 merge(arr, l, m, r);
80 }
81}
82
87void show(int *arr, int size) {
88 for (int i = 0; i < size; i++) std::cout << arr[i] << " ";
89 std::cout << "\n";
90}
91
93int main() {
94 int size;
95 std::cout << "Enter the number of elements : ";
96 std::cin >> size;
97 int *arr = new int[size];
98 std::cout << "Enter the unsorted elements : ";
99 for (int i = 0; i < size; ++i) {
100 std::cin >> arr[i];
101 }
102 mergeSort(arr, 0, size - 1);
103 std::cout << "Sorted array : ";
104 show(arr, size);
105 delete[] arr;
106 return 0;
107}
108
void merge(int *arr, int l, int m, int r)
void mergeSort(int *arr, int l, int r)
int main()