File tree Expand file tree Collapse file tree 1 file changed +47
-29
lines changed Expand file tree Collapse file tree 1 file changed +47
-29
lines changed Original file line number Diff line number Diff line change 22
22
23
23
using namespace std ;
24
24
25
- int N;
26
- int ARRAY[MAX_N];
25
+ int n;
26
+ int a[MAX_N];
27
+ int temp[MAX_N];
27
28
28
- void qsort (int low , int high )
29
+ void merge (int left , int mid, int right )
29
30
{
30
- int i = low ;
31
- int j = high ;
32
- int pivot = ARRAY[(low + high) / 2 ] ;
31
+ int i = left ;
32
+ int j = mid + 1 ;
33
+ int k = left ;
33
34
34
- do
35
+ while ((i <= mid) && (j <= right))
35
36
{
36
- while (ARRAY [i] < pivot && i <= high )
37
+ if (a [i] < a[j] )
37
38
{
39
+ temp[k] = a[i];
38
40
i++;
39
41
}
40
-
41
- while (ARRAY[j] > pivot && j > low)
42
+ else
42
43
{
43
- j--;
44
+ temp[k] = a[j];
45
+ j++;
44
46
}
47
+ k++;
48
+ }
45
49
46
- if (i <= j)
50
+ if (i > mid)
51
+ {
52
+ for (int l = j; l <= right; l++)
47
53
{
48
- int temp = ARRAY[i];
49
- ARRAY[i] = ARRAY[j];
50
- ARRAY[j] = temp;
51
-
52
- i++;
53
- j--;
54
+ temp[k] = a[l];
55
+ k++;
56
+ }
57
+ }
58
+ else
59
+ {
60
+ for (int l = i; l <= mid; l++)
61
+ {
62
+ temp[k] = a[l];
63
+ k++;
54
64
}
55
- } while (i <= j);
65
+ }
56
66
57
- if (low < j )
67
+ for ( int l = left; l <= right; l++ )
58
68
{
59
- qsort (low, j) ;
69
+ a[l] = temp[l] ;
60
70
}
61
- if (high > i)
71
+ }
72
+
73
+ void msort (int left, int right)
74
+ {
75
+ if (left < right)
62
76
{
63
- qsort (i, high);
77
+ int mid = (left + right) / 2 ;
78
+ msort (left, mid);
79
+ msort (mid + 1 , right);
80
+
81
+ merge (left, mid, right);
64
82
}
65
83
}
66
84
67
85
int main (int argc, char const *argv[])
68
86
{
69
87
ios::sync_with_stdio (false );
70
88
71
- cin >> N ;
89
+ cin >> n ;
72
90
73
- for (int i = 0 ; i < N ; i++)
91
+ for (int i = 0 ; i < n ; i++)
74
92
{
75
- cin >> ARRAY [i];
93
+ cin >> a [i];
76
94
}
77
95
78
- qsort (0 , N - 1 );
96
+ msort (0 , n - 1 );
79
97
80
- for (int i = 0 ; i < N ; i++)
98
+ for (int i = 0 ; i < n ; i++)
81
99
{
82
- cout << ARRAY [i] << ' \n ' ;
100
+ cout << a [i] << ' \n ' ;
83
101
}
84
102
85
103
return 0 ;
You can’t perform that action at this time.
0 commit comments