================================== 풀이 ====================================
선택 정렬 : 가장 작은 값은 선택하여 앞으로 보내는 정렬
int main(void) { // 2750번 선택 정렬
int tmp, num,min, index;
int data[1000];
scanf("%d", &num);
for (int i = 0; i < num; i++)
scanf("%d", &data[i]);
for (int i = 0; i < num; i++) {
min = 1001;
for (int j = i; j < num; j++) {
if (min > data[j]) {
min = data[j];
index = j;
}
}
tmp = data[i];
data[i] = data[index];
data[index] = tmp;
}
for (int i = 0; i < num; i++) {
printf("%d\n", data[i]);
}
}
버블 정렬 : 바로 옆에 위치한 값과 비교하여 작은 값을 앞으로 보내는 정렬
=> 제일 마지막에 위치한 값은 제일 큰 값이 된다.
int main(void) { // 2750번 버블 정렬
int tmp, num;
int data[1000];
scanf("%d", &num);
for (int i = 0; i < num; i++)
scanf("%d", &data[i]);
for (int i = 0; i < num; i++) {
for (int j = 0; j < num - i - 1; j++) {
if ( data[j] > data[j + 1]) {
tmp = data[j];
data[j] = data[j + 1];
data[j + 1] = tmp;
}
}
}
for (int i = 0; i < num; i++) {
printf("%d\n", data[i]);
}
}
삽입 정렬 : 기본적으로 앞에 있는 값들은 모두 정렬되어 있다고 생각하고 정렬을 시작한다.
int main(void) { // 2750번 삽입 정렬
int tmp, num;
int data[1000];
scanf("%d", &num);
for (int i = 0; i < num; i++)
scanf("%d", &data[i]);
for (int i = 0; i < num-1; i++) {
for (int j = i; j >= 0 && data[j] > data[j + 1]; j--) {
tmp = data[j];
data[j] = data[j + 1];
data[j + 1] = tmp;
}
}
for (int i = 0; i < num; i++) {
printf("%d\n", data[i]);
}
}
반응형
'알고리즘' 카테고리의 다른 글
[알고리즘] 백준 10989번 문제_수 정렬 (1) | 2022.02.10 |
---|---|
[알고리즘] 백준 1431번 문제_시리얼 번호 (2) | 2022.02.10 |
[알고리즘] 백준 1181번 문제_단어 정렬 (0) | 2022.02.10 |
[알고리즘] 백준 2751번 문제_1000만개 정렬 (0) | 2022.02.10 |
[알고리즘] 백준 2752번 문제_세수 정렬 (0) | 2022.02.10 |