이론

두 인접한 데이터의 크기를 비교해 정렬하는 방법이다. 간단하게 구현할 수 있지만, 시간 복잡도가 O(n²)으로 다른 정렬 알고리즘보다 속도가 느린 편이다.

버블 정렬 수행 방식

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

</aside>

Untitled

Untitled

문제

문제 설명

Untitled

문제 분석

Untitled

Untitled

슈도코드

Untitled

구현

public class 수_정렬하기1_2750 {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        int N = scan.nextInt();
        int[] A = new int[N];
        for (int i = 0; i < N; i++) {
            A[i] = scan.nextInt();
        }

        // 버블 정렬 구현
        for (int i = 0; i < N - 1; i++) {
            // -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]);
        }
    }
}