전공/알고리즘 + 코테

[C 언어] 백준 #2750

BBungyaLog 2023. 5. 11. 21:54

문제

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) 활용