신규 블로그를 만들었습니다!
문제
N개의 수가 주어졌을 때, 이를 오름차순으로 정렬하는 프로그램을 작성하시오.
입력
첫째 줄에 수의 개수 N(1 ≤ N ≤ 1,000)이 주어진다. 둘째 줄부터 N개의 줄에는 숫자가 주어진다. 이 수는 절대값이 1,000보다 작거나 같은 정수이다. 수는 중복되지 않는다.
출력
첫째 줄부터 N개의 줄에 오름차순으로 정렬한 결과를 한 줄에 하나씩 출력한다.
예제 입력
5
5
2
3
4
1
예제 출력
1
2
3
4
5
코드
선택정렬 사용한 방법
#include <stdio.h>
// 1 <= n <= 1000
int data[1000];
int main(void){
int i, j, min, temp, index, num;
scanf("%d", &num);
for(i=0; i<num; i++){
scanf("%d", &data[i]);
}
for(i=0; i<num; i++){
min = 1001;
for(j=i; j<num; j++){
if(min > data[j]){
min = data[j];
index = j;
}
}
temp = data[i];
data[i] = data[index];
data[index] = temp;
}
for(i = 0; i<num; i++){
printf("%d\n", data[i]);
}
return 0;
}
버블정렬 사용한 방법
#include <stdio.h>
// 1 <= n <= 1000
int data[1000];
int main(void){
int i, j, temp, num;
scanf("%d", &num);
for(i=0; i<num; i++){
scanf("%d", &data[i]);
}
// 버블 정렬
for(i=0; i<num; i++){
for(j=0; j<num-1-i; j++){
if(data[j] > data[j+1]){
temp = data[j];
data[j] = data[j+1];
data[j+1] = temp;
}
}
}
for(i = 0; i<num; i++){
printf("%d\n", data[i]);
}
return 0;
}
삽입정렬 이용한 방법
#include <stdio.h>
// 1 <= n <= 1000
int data[1000];
int main(void){
int i, j, temp, num;
scanf("%d", &num);
for(i=0; i<num; i++){
scanf("%d", &data[i]);
}
// 삽입 정렬
for(i=0; i<num-1; i++){
j = i;
while(j>=0 && data[j] > data[j+1]){
temp = data[j];
data[j] = data[j+1];
data[j+1] = temp;
j--;
}
}
for(i = 0; i<num; i++){
printf("%d\n", data[i]);
}
return 0;
}
※ 직접 문제 풀고 돌려본 뒤, 채점까지 마친 후에 작성한 글입니다.
더 좋은 방법이 있다면, 댓글로 알려주시면 감사하겠습니다 :)
관련 글
2018/04/28 - [Algorithm] - 자료구조 :: 선택정렬 Selection sort (c/c++ 구현)
2018/04/28 - [Algorithm] - 자료구조 :: 버블정렬 Bubble sort (c/c++ 구현)
2018/04/28 - [Algorithm] - 자료구조 :: 삽입정렬 Insertion sort (c/c++ 구현)
'Algorithm > 백준 온라인 저지' 카테고리의 다른 글
백준/11727번 :: 2xn 타일링 2 (C/C++ 구현) - DP, 메모이제이션 (4) | 2018.05.02 |
---|---|
백준/11726번 :: 2xn 타일링 (C/C++ 구현) (5) | 2018.05.02 |
백준/2577번 :: 숫자의 개수 (JAVA) (6) | 2018.03.29 |
백준/1152번 :: 단어의 개수 (JAVA) (6) | 2018.03.29 |
백준/4344번 :: 평균은 넘겠지 (C언어) (2) | 2018.02.07 |
최근댓글