Skip to content

Commit 5dd29c7

Browse files
committed
Solve 수 정렬하기 2 (2751)
1 parent 3a8c255 commit 5dd29c7

File tree

1 file changed

+47
-29
lines changed

1 file changed

+47
-29
lines changed

baekjoon/2751.cpp

Lines changed: 47 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -22,64 +22,82 @@
2222

2323
using namespace std;
2424

25-
int N;
26-
int ARRAY[MAX_N];
25+
int n;
26+
int a[MAX_N];
27+
int temp[MAX_N];
2728

28-
void qsort(int low, int high)
29+
void merge(int left, int mid, int right)
2930
{
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;
3334

34-
do
35+
while ((i <= mid) && (j <= right))
3536
{
36-
while (ARRAY[i] < pivot && i <= high)
37+
if (a[i] < a[j])
3738
{
39+
temp[k] = a[i];
3840
i++;
3941
}
40-
41-
while (ARRAY[j] > pivot && j > low)
42+
else
4243
{
43-
j--;
44+
temp[k] = a[j];
45+
j++;
4446
}
47+
k++;
48+
}
4549

46-
if (i <= j)
50+
if (i > mid)
51+
{
52+
for (int l = j; l <= right; l++)
4753
{
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++;
5464
}
55-
} while (i <= j);
65+
}
5666

57-
if (low < j)
67+
for (int l = left; l <= right; l++)
5868
{
59-
qsort(low, j);
69+
a[l] = temp[l];
6070
}
61-
if (high > i)
71+
}
72+
73+
void msort(int left, int right)
74+
{
75+
if (left < right)
6276
{
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);
6482
}
6583
}
6684

6785
int main(int argc, char const *argv[])
6886
{
6987
ios::sync_with_stdio(false);
7088

71-
cin >> N;
89+
cin >> n;
7290

73-
for (int i = 0; i < N; i++)
91+
for (int i = 0; i < n; i++)
7492
{
75-
cin >> ARRAY[i];
93+
cin >> a[i];
7694
}
7795

78-
qsort(0, N - 1);
96+
msort(0, n - 1);
7997

80-
for (int i = 0; i < N; i++)
98+
for (int i = 0; i < n; i++)
8199
{
82-
cout << ARRAY[i] << '\n';
100+
cout << a[i] << '\n';
83101
}
84102

85103
return 0;

0 commit comments

Comments
 (0)