1368: [정렬] 버블 정렬
[만든사람 : 2015 개정 교육과정 고등학교 정보과학 (주)삼양미디어]
문제 설명
정보과학 교과서 151p
----
버블 정렬(bubble 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; i++) //n번 실행한다.
{
for(int j=1; j<=n-1; j++)
{
if(d[j] > d[j+1]) //왼쪽 값이 오른쪽 값보다 크면, 오른쪽 값과 자리를 바꾼다.
{
int t = d[j];
d[j] = d[j+1];
d[j+1] = t;
}
}
}
for(int i=1; i<=n; i++)
printf("%d ", d[i]);
}
----
버블 정렬(bubble 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; i++) //n번 실행한다.
{
for(int j=1; j<=n-1; j++)
{
if(d[j] > d[j+1]) //왼쪽 값이 오른쪽 값보다 크면, 오른쪽 값과 자리를 바꾼다.
{
int t = d[j];
d[j] = d[j+1];
d[j+1] = 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