2
2
* \addtogroup sorting Sorting Algorithms
3
3
* @{
4
4
* \file
5
- * \brief [Merege Sort Algorithm
6
- * (MEREGE SORT)](https://en.wikipedia.org/wiki/Merge_sort) implementation
5
+ * \brief [Merge Sort Algorithm
6
+ * (MERGE SORT)](https://en.wikipedia.org/wiki/Merge_sort) implementation
7
7
*
8
8
* \author [Ayaan Khan](http://github.com/ayaankhan98)
9
9
*
17
17
* In built-in sort function merge sort along with quick sort is used.
18
18
*/
19
19
#include < iostream>
20
+ #include < vector>
20
21
21
22
/* *
22
23
*
34
35
* @param r - end index or right index of second half array
35
36
*/
36
37
void merge (int *arr, int l, int m, int r) {
37
- int i, j, k;
38
38
int n1 = m - l + 1 ;
39
39
int n2 = r - m;
40
40
41
- int *L = new int [n1], *R = new int [n2] ;
41
+ std::vector< int > L (n1), R (n2) ;
42
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];
43
+ for (int i = 0 ; i < n1; i++) L[i] = arr[l + i];
44
+ for (int j = 0 ; j < n2; j++) R[j] = arr[m + 1 + j];
45
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])) {
46
+ int i = 0 , j = 0 , k = l;
47
+
48
+ while (i < n1 && j < n2) {
49
+ if (L[i] <= R[j]) {
51
50
arr[k] = L[i];
52
51
i++;
53
52
} else {
@@ -57,8 +56,17 @@ void merge(int *arr, int l, int m, int r) {
57
56
k++;
58
57
}
59
58
60
- delete[] L;
61
- delete[] R;
59
+ while (i < n1) {
60
+ arr[k] = L[i];
61
+ i++;
62
+ k++;
63
+ }
64
+
65
+ while (j < n2) {
66
+ arr[k] = R[j];
67
+ j++;
68
+ k++;
69
+ }
62
70
}
63
71
64
72
/* *
@@ -92,15 +100,22 @@ void show(int *arr, int size) {
92
100
/* * Main function */
93
101
int main () {
94
102
int size;
95
- std::cout << " Enter the number of elements : " ;
103
+ std::cout << " Enter the number of elements: " ;
96
104
std::cin >> size;
105
+
106
+ if (size <= 0 ) {
107
+ std::cout << " Invalid size.\n " ;
108
+ return 1 ;
109
+ }
110
+
97
111
int *arr = new int [size];
98
- std::cout << " Enter the unsorted elements : " ;
112
+ std::cout << " Enter the unsorted elements: " ;
99
113
for (int i = 0 ; i < size; ++i) {
100
114
std::cin >> arr[i];
101
115
}
116
+
102
117
mergeSort (arr, 0 , size - 1 );
103
- std::cout << " Sorted array : " ;
118
+ std::cout << " Sorted array: " ;
104
119
show (arr, size);
105
120
delete[] arr;
106
121
return 0 ;
0 commit comments