🔒 문제
N개의 수가 주어졌을 때, 이를 오름차순으로 정렬하는 프로그램을 작성하시오.
⌨ 입력
첫째 줄에 수의 개수 N(1 ≤ N ≤ 1,000)이 주어진다. 둘째 줄부터 N개의 줄에는 수 주어진다. 이 수는 절댓값이 1,000보다 작거나 같은 정수이다. 수는 중복되지 않는다.
🖨 출력
첫째 줄부터 N개의 줄에 오름차순으로 정렬한 결과를 한 줄에 하나씩 출력한다.
📚 예제
Ex1)
5
5
2
3
4
1
1
2
3
4
5
📌 풀이
버블 정렬을 사용하였습니다.
버블 정렬과 관련된 내용은 자료구조에서 자세하게 정리하겠습니다!
버블 정렬은 첫번째 원소부터 인접한 원소와 비교하여 자리를 바꾸면서 맨 끝부터 정렬하는 방식입니다.
오름차순으로 정렬하기 위해 인덱스 i가 인덱스 i+1보다 큰 경우 자리를 바꿔줬습니다.
시간 복잡도는 O(n^2)입니다.
🔑 c언어 코드
#include <stdio.h>
#define SWAP(t,x,y)(t=x,x=y,y=t)
int sorting(int* n, int N); // 버블 정렬
void print(int* n, int N); // 정렬 결과 출력
int main()
{
int N;
int* n;
scanf("%d", &N);
n = malloc(sizeof(int) * N);
for (int i = 0; i < N; i++)
scanf("%d", &n[i]);
n = sorting(n,N);
print(n, N);
}
int sorting(int* n, int N)
{
int t;
for (int i = 0; i < N; i++)
for (int j = 1; j < N - i; j++)
{
if (n[j - 1] > n[j])
SWAP(t, n[j - 1], n[j]);
}
return n;
}
void print(int* n, int N)
{
for (int i = 0; i < N; i++)
printf("%d\n", n[i]);
}
'BAEKJOON > 단계별로 풀어보기' 카테고리의 다른 글
[BOJ] 7568번 : 덩치 (0) | 2022.08.25 |
---|---|
[BOJ] 11729번 : 하노이의 탑 이동 순서(★) (0) | 2022.08.20 |
[BOJ] 2231번 : 분해합 (0) | 2022.08.20 |
[BOJ] 2798번 : 블랙잭 (0) | 2022.08.18 |
[BOJ] 17478번 : 재귀함수가 뭔가요? (0) | 2022.08.16 |