File tree 1 file changed +78
-0
lines changed
1 file changed +78
-0
lines changed Original file line number Diff line number Diff line change
1
+ #include<bits/stdc++.h>
2
+ using namespace std;
3
+
4
+ void display(int *array, int size) {
5
+ for(int i = 0; i<size; i++)
6
+ cout << array[i] << " ";
7
+ cout << endl;
8
+ }
9
+ void merge(int *array, int l, int m, int r)
10
+ {
11
+ int i, j, k, nl, nr;
12
+ nl = m-l+1;
13
+ nr = r-m;
14
+ int larr[nl], rarr[nr];
15
+
16
+ for(i = 0; i<nl; i++)
17
+ larr[i] = array[l+i];
18
+
19
+ for(j = 0; j<nr; j++)
20
+ rarr[j] = array[m+1+j];
21
+
22
+ i = 0; j = 0; k = l;
23
+
24
+ while(i < nl && j<nr)
25
+ {
26
+ if(larr[i] <= rarr[j])
27
+ {
28
+ array[k] = larr[i];
29
+ i++;
30
+ }
31
+ else
32
+ {
33
+ array[k] = rarr[j];
34
+ j++;
35
+ }
36
+ k++;
37
+ }
38
+
39
+ while(i<nl)
40
+ {
41
+ array[k] = larr[i];
42
+ i++; k++;
43
+ }
44
+ while(j<nr)
45
+ {
46
+ array[k] = rarr[j];
47
+ j++; k++;
48
+ }
49
+ }
50
+
51
+ void mergeSort(int *array, int l, int r)
52
+ {
53
+ int m;
54
+ if(l < r) {
55
+ int m = l+(r-l)/2;
56
+ mergeSort(array, l, m);
57
+ mergeSort(array, m+1, r);
58
+ merge(array, l, m, r);
59
+ }
60
+ }
61
+
62
+ int main() {
63
+ int n;
64
+ cin >> n;
65
+ int arr[n];
66
+ for(int i = 0; i<n; i++) {
67
+ cin >> arr[i];
68
+ }
69
+ clock_t start,end;
70
+
71
+ start = clock();
72
+ mergeSort(arr, 0, n-1);
73
+ end = clock();
74
+ double time_taken = double(end - start) / double(CLOCKS_PER_SEC);
75
+ cout<<"Time Taken "<<time_taken<<endl;
76
+ cout << "After Sorting: "<<endl;
77
+ display(arr, n);
78
+ }
You can’t perform that action at this time.
0 commit comments