문제1368--[정렬] 버블 정렬

1368: [정렬] 버블 정렬

[만든사람 : 2015 개정 교육과정 고등학교 정보과학 (주)삼양미디어]
시간제한 : 1.000 sec  메모리제한 : 128 MiB

문제 설명

정보과학 교과서 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]);
}

입력 설명

첫 번째 줄에 데이터의 개수(n)가 입력된다.
두 번째 줄에는 n개의 데이터(k)가 스페이스를 사이에 두고 한 줄로 입력된다.
[1 <= n <= 3000]
[0 <= k <= 2147483647]

출력 설명

오름 차순으로 정렬한 결과를 스페이스를 사이에 두고 한 줄로 출력한다.

입력 예시 Copy

5
9 8 3 4 7

출력 예시 Copy

3 4 7 8 9

출처/분류