1337: [정렬] 선택 정렬
[만든사람 : 2015 개정 교육과정 고등학교 정보과학 (주)삼양미디어]
문제 설명
정보과학 교과서 153p
----
선택 정렬(selection sort)는 주어진 데이터들 중에서 가장 작은 값을 찾는 과정을 반복하는 정렬 방법이다.
주어진 데이터 집합 중에서 가장 작은 값을 찾아 선택하는 과정을 반복하며 정렬되기 때문에 선택 정렬이라고 부른다.
n개의 정수 데이터를 입력받아 오름차순으로 정렬하여 출력하는 프로그램을 작성해보자.
단, 정렬 함수 sort() 를 사용할 수 없다.
#include <stdio.h>
int n, d[3010];
int main()
{
scanf("%d", &n);
for(int i=1; i<=n; i++)
scanf("%d", &d[i]);
for(int i=1; i<=n-1; i++) //n-1번 실행한다.
{
for(int j=i+1; j<=n; j++)
{
if(d[i] > d[j]) //i번째 값이 다른 값보다 크면, 그 값과 자리를 바꾼다.
{
int t = d[i];
d[i] = d[j];
d[j] = t;
}
}
}
for(int i=1; i<=n; i++)
printf("%d ", d[i]);
}
----
선택 정렬(selection sort)는 주어진 데이터들 중에서 가장 작은 값을 찾는 과정을 반복하는 정렬 방법이다.
주어진 데이터 집합 중에서 가장 작은 값을 찾아 선택하는 과정을 반복하며 정렬되기 때문에 선택 정렬이라고 부른다.
n개의 정수 데이터를 입력받아 오름차순으로 정렬하여 출력하는 프로그램을 작성해보자.
단, 정렬 함수 sort() 를 사용할 수 없다.
#include <stdio.h>
int n, d[3010];
int main()
{
scanf("%d", &n);
for(int i=1; i<=n; i++)
scanf("%d", &d[i]);
for(int i=1; i<=n-1; i++) //n-1번 실행한다.
{
for(int j=i+1; j<=n; j++)
{
if(d[i] > d[j]) //i번째 값이 다른 값보다 크면, 그 값과 자리를 바꾼다.
{
int t = d[i];
d[i] = d[j];
d[j] = t;
}
}
}
for(int i=1; i<=n; i++)
printf("%d ", d[i]);
}
입력 설명
첫 번째 줄에 데이터의 개수(n)가 입력된다.
두 번째 줄에는 n개의 데이터(k)가 스페이스를 사이에 두고 한 줄로 입력된다.
[1 <= n <= 3000]
[0 <= k <= 2147483647]
두 번째 줄에는 n개의 데이터(k)가 스페이스를 사이에 두고 한 줄로 입력된다.
[1 <= n <= 3000]
[0 <= k <= 2147483647]
출력 설명
오름 차순으로 정렬한 결과를 스페이스를 사이에 두고 한 줄로 출력한다.
입력 예시 Copy
5
9 8 3 4 7
출력 예시 Copy
3 4 7 8 9