algorithm 백준 2570 정렬 (c)
N개의 수가 주어졌을 때, 이를 오름차순으로 정렬하는 프로그램을 작성하시오.
첫째 줄부터 N개의 줄에 오름차순으로 정렬한 결과를 한 줄에 하나씩 출력한다.
[출처] : 백준 온라인 저지
풀이
#include <stdio.h>
#include <stdlib.h>
int main(void){
int i, j, key, num;
scanf("%d", &num);
int* data = (int*)malloc(sizeof(int)*(num+1));
for(i=0; i<num; i++){
scanf("%d", &data[i]);
}
for (i = 1; i < num; i++) {
key = data[i];
j = i - 1;
while (j >= 0 && data[j] > key) {
data[j + 1] = data[j];
j--;
}
data[j+1] = key;
}
for(i = 0; i<num; i++) printf("%d\n", data[i]);
free(data);
}
- 삽입정렬 Insertion Sort로 오름차순 정렬 구현
- malloc 을 사용할 때 에러가 자꾸 남 (ㅠㅠ)
# include <stdlib.h>
헤더를 적어주고- int* list =
(int*)
malloc(sizeof(int)*(num+1)) 로 해줬더니 해결됐다
- list[j + 1] = list[j–]; 라고 하니까 에러가 났다
- 따로 빼서 j–; 라고 했을 때 잘 작동했음
Comments