알고리즘(Algorithm)
수 정렬하기 (2750)
맛두부
2017. 3. 4. 22:45
1. 문제
N개의 수가 주어졌을 때, 이를 오름차순으로 정렬하는 프로그램을 작성하시오.
첫째 줄에 수의 개수 N(1<=N<=1,000)이 주어진다. 둘째 줄부터 N개의 줄에는 숫자가 주어진다. 이 수는 절대값이 1,000보다 작거나 같은 정수이다. 수는 중복되지 않는다.
2. 포인트
1) 정렬 알고리즘 적용
입력 갯수가 1000개 이하이므로 정렬 복잡도가 높아도 처리시간이 오래 안걸린다.
-> 버블정렬 적용 ▶ for문 조건 주의 : tCase -1, (tCase-i)-1
2) 배열 동적할당
3. 소스코드
#include <stdio.h>
int main()
{
int tCase, temp;
int i, j;
int *arr;
scanf("%d", &tCase);
arr = (int*)malloc(sizeof(int)*tCase);
for (i = 0; i < tCase; i++)
{
scanf("%d", &temp);
arr[i] = temp;
}
// Bubble Sort
for (i = 0; i < tCase-1; i++)
{
for (j = 0; j < (tCase - i)-1; j++)
{
if (arr[j] > arr[j + 1])
{
temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
for (i = 0; i < tCase; i++)
printf("%d\n", arr[i]);
return 0;
}