본문 바로가기
코딩테스트

[버블 정렬] 백준 2750

by notcherry 2024. 2. 27.

 

 

 

버블정렬이란?

두 인접한 데이터의 크기를 비교해 정렬하는 방법이다.

간단하게 구현할 수 있지만 시간 복잡도는 O(㎡)으로 다른 정렬 알로그리즘보다 속도가 느린 편이다.

주로 loop를 돌면서 인접한 데이터 간의 swap 연산으로 정렬한다.

만약 특정한 루프의 전체 영역에서 swap이 한 번도 발생하지 않았다면 그 뒤에 있는 데이터가 모두 정렬됐다는 뜻이므로 프로세스를 종료해도 된다. 

 

출처 하루코딩

 

 

백준 2750번 문제를 

sort를 사용할 수 있지만 n값이 작으므로 직접 정렬을 시도해서 문제를 풀어보겠다.

 

public class 수정렬하기 {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        int n = Integer.parseInt(br.readLine());
        int a[] = new int[n];
        for(int i =0; i<n; i++) {
            a[i] = Integer.parseInt(br.readLine());
        }

        //버블정렬
        for (int i = 0; i<n; i++ ) {
            for(int j =0; j<n-1-i; j++) {
                if (a[j] > a[j+1]) {
                    int temp = a[j];
                    a[j] = a[j+1];
                    a[j+1] = temp;
                }
            }
        }
        for(int i = 0; i<n; i++) {
            System.out.println(a[i]);
        }
    }