티스토리 뷰

자바

자바 버블정렬

ITGenerations 2019. 11. 9. 17:26

자바 버블정렬

 

버블정렬이란?

이웃한 인덱스중 큰 값을 뒤로 옮기는 방식이다. 인덱스 배열이 15, 11, 1, 3, 8이 있다고 가정하에 버블 정렬을 한다면

정렬은 다음과 같이 바뀐다.

 

 

정렬전 인덱스

15, 11, 1, 3, 8

 

1회전후 : 15가 11보다 크므로 자리바뀜

11, 15, 1, 3, 8

 

2회전후 : 15가 1보다 크므로 자리바뀜

11, 1, 15, 3, 8

 

3회전후 : 15가 3보다 크므로 자리바뀜

11, 1, 3, 15, 8

 

4회전후 : 15가 8보다 크므로 자리바뀜, 15가 가장 큰 수 이므로 이후로 마지막 자리는 비교 안해도됨

11, 1, 3, 8, 15

 

5회전후 : 11이 1보다 크므로 자리바뀜

1, 11, 3, 8, 15

 

6회전후 : 11이 3보다 크므로 자리 바뀜

1, 3, 11, 8, 15

 

7회전후 : 11이 8보다 크므로 자리 바뀜, 11이 두 번째로 큰 수이므로 이후로 4, 5번째 자리는 비교 안함.

1, 3, 8, 11, 15

 

이후 회전 : 정렬된 값이고, 순차적이므로 비교해도 자리 바뀜이 일어나지 않음.

 

 

총비교횟수 : n(n-1)/2

 

시간복잡도(빅오표기법)

최상 평균 최악
O(n^2) O(n^2) O(n^2)

 

 

 

 

버블정렬 소스

/*
버블정렬
버블정렬은 이웃하는 인덱스를 비교하여 큰 데이터를 뒤로 보내는 방식이다.
 */
package algorithm;

public class BubbleSort {
    public static void main(String[] args){


        int[] index = {15, 11, 1, 3, 8};        // 정렬되지 않은 인덱스
        int k, tmp;

        System.out.println("시작값");
        System.out.println("15, 11, 1, 3, 8");
        System.out.println("");

        for(int i = 0; i < index.length; i++){
            for(int j = 0; j < index.length-i-1; j++){
                if(index[j] > index[j+1]){
                    tmp = index[j];
                    index[j] = index[j+1];
                    index[j+1] = tmp;
                }
            }


            for(k = 0; k < index.length; k++){
                System.out.print(index[k]+" ");
            }

            System.out.println("");

        }






    }
}

 

 

 

 

 

 

'자바' 카테고리의 다른 글

[이클립스에러]Problems During Content Assist  (0) 2020.01.10
자바 삽입정렬  (0) 2019.11.09
자바 선택정렬  (0) 2019.11.09
자바 간단 계산기  (0) 2019.11.08
변수  (0) 2019.10.19