[알고리즘 학습] 05 - 정렬 알고리즘 기본 문제풀이

[알고리즘 학습] 05 - 정렬 알고리즘 기본 문제풀이

나동빈님의 실전 알고리즘 강좌(Algorithm Programming Tutorial)를 바탕으로 학습한 내용을 정리한 포스트입니다.
실습 코드는 WebKit’s style guide를 따라 C언어로 작성되었습니다.
개인적으로 학습하며 작성한 포스트이기 때문에 오류가 있을 수 있습니다. 잘못된 내용이 있다면 댓글로 알려주세요.

백준 2752번 - 세수정렬

링크: https://www.acmicpc.net/problem/2752

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#include <stdio.h>

int array[3];

int main(void)
{
int i, j, min, index, temp;

for (i = 0; i < 3; ++i) {
scanf("%d", &array[i]);
}

for (i = 0; i < 3; ++i) {
min = 1000001;
for (j = i; j < 3; ++j) {
if (array[j] < min) {
min = array[j];
index = j;
}
}
temp = array[i];
array[i] = array[index];
array[index] = temp;
}

for (i = 0; i < 3; ++i)
printf("%d ", array[i]);

return 0;
}

백준 2750 - 수 정렬하기

링크: https://www.acmicpc.net/problem/2750

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#include <stdio.h>

int array[1001];

int main(void)
{
int number, i, j, min, index, temp;
scanf("%d", &number);

for (i = 0; i < number; ++i) {
scanf("%d", &array[i]);
}

for (i = 0; i < number; ++i) {
min = 1001;
for (j = i; j < number; ++j) {
if (array[j] < min) {
min = array[j];
index = j;
}
}
temp = array[i];
array[i] = array[index];
array[index] = temp;
}

for (i = 0; i < number; ++i)
printf("%d ", array[i]);

return 0;
}

백준 2751 - 수 정렬하기2

링크: https://www.acmicpc.net/problem/2751

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
#include <stdio.h>

int array[1000001];

void quickSort(int* data, int pos_start, int pos_end)
{
int mLeft = pos_start, mRight = pos_end;
int pivot = data[(pos_start + pos_end) / 2];
int temp;

while (mLeft <= mRight) {
while (pivot > data[mLeft])
mLeft++;
while (pivot < data[mRight])
mRight--;

if (mLeft <= mRight) {
temp = data[mLeft];
data[mLeft] = data[mRight];
data[mRight] = temp;
mLeft++, mRight--;
}
}

if (pos_start < mRight)
quickSort(data, pos_start, mRight);
if (mLeft < pos_end)
quickSort(data, mLeft, pos_end);
}

int main(void)
{
int number, i;

scanf("%d", &number);

for (i = 0; i < number; ++i) {
scanf("%d", &array[i]);
}

quickSort(array, 0, number - 1);

for (i = 0; i < number; ++i)
printf("%d\n", array[i]);

return 0;
}

댓글

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×