문제
N개의 수가 주어졌을 때, 이를 오름차순으로 정렬하는 프로그램을 작성하시오.
출력
첫째 줄부터 N개의 줄에 오름차순으로 정렬한 결과를 한 줄에 하나씩 출력한다.
// selection sort
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
void selectionSort(int* A, int n)
{
int i, j;
int max, max_index;
for (i = 0; i < n - 1; i++) {
max = A[0];
max_index = 0;
for (j = 1; j < n - i; j++) {
if (max < A[j]) {
max = A[j];
max_index = j;
}
}
A[max_index] = A[n - 1 - i];
A[n - 1 - i] = max;
}
}
int main(void)
{
int* A;
int n;
scanf("%d", &n);
A = (int*)malloc(sizeof(int) * n);
if (!A)
return 0;
for (int i = 0; i < n; i++)
scanf("%d", &A[i]);
selectionSort(A, n);
for (int i = 0; i < n; i++)
printf("%d\n", A[i]);
free(A);
return 0;
}
풀이
선택정렬(selection sort) 활용
'전공 > 알고리즘 + 코테' 카테고리의 다른 글
| [JAVA] 백준 #1271 - 엄청난 부자2 (0) | 2024.01.15 |
|---|---|
| [C 언어] 백준 #1929 - 소수 구하기 (0) | 2023.07.14 |
| [C 언어] 백준 #2609 - 최대공약수와 최소공배수 구하기 (0) | 2023.07.11 |
| [C 언어] 백준 #17427 - 약수의 합 (0) | 2023.07.10 |
| [C 언어] 백준 #9095 - 1, 2, 3 더하기 (0) | 2023.06.27 |
