백준 단계별로 풀어보기/정렬
백준 2750 수 정렬하기
jgs7784
2022. 9. 18. 16:36
728x90
반응형
수 정렬하기 성공
문제
N개의 수가 주어졌을 때, 이를 오름차순으로 정렬하는 프로그램을 작성하시오.
입력
첫째 줄에 수의 개수 N(1 ≤ N ≤ 1,000)이 주어진다. 둘째 줄부터 N개의 줄에는 수 주어진다. 이 수는 절댓값이 1,000보다 작거나 같은 정수이다. 수는 중복되지 않는다.
출력
첫째 줄부터 N개의 줄에 오름차순으로 정렬한 결과를 한 줄에 하나씩 출력한다.
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>
#include <string.h>
int main(){
int count;
scanf("%d",&count);
int array[count];
for(int i=0; i<count; i++){
int num;
scanf("%d",&num);
array[i] = num;
}
//입력 부
//가장 단순하게 가보자
//insertion sort
for(int i=1; i<count; i++){
int key = array[i];
int j;
for(j=i-1; j>=0 && array[j]>key; j-- ){
array[j+1] = array[j];
}
array[j+1] = key;
}
for(int i=0; i<count; i++){
printf("%d\n",array[i]);
}
}
|
cs |
삽입 정렬을 활용했다.
가장 먼저 array[i]의 2번째 값(array[1]) 을 키 값으로 설정한 후, 그 앞에 있는 값들과 순서대로 비교한다
j 는 i 보다 1칸 앞의 수 부터 시작해서
배열에 존재하는 key값(array[i]) 과 비교하여 자신이 크면 key와 자리를 바꾼다.
반응형