오봉이와 함께하는 개발 블로그

버블 정렬(Bubble Sort) 본문

알고리즘 & 자료구조 & 네트워크

버블 정렬(Bubble Sort)

오봉봉이 2021. 12. 1. 10:37
728x90

Algorithmday_4 정리 (2021.12.01 수요일)

버블 정렬(Bubble Sort)

  • 인접한 항목이 순서대로 되어 있지 않으면 서로 교환한다.
    • a = [7,6,5,2,1,4,8,9,3] 원본
    • a = [6,7,5,2,1,4,8,9,3] 7, 6 교환
    • a = [6,5,7,2,1,4,8,9,3] 7, 5 교환
    • a = [6,5,2,7,1,4,8,9,3] 7, 2 교환
    • a = [6,5,2,1,7,4,8,9,3] 7, 1 교환
    • a = [6,5,2,1,4,7,8,9,3] 7, 4 교환
    • a = [6,5,2,1,4,7,8,3,9] 7, 8 / 7, 9는 맞기 때문에 건너 뛰고(하지만 비교는 하기 때문에 성능에 영향을 끼친다.) 9, 3 교환
    • 까지 1라운드 종료 -> 다시 a[0], a[1]비교부터 시작
    • a = [5,6,2,1,4,7,8,3,9] 6, 5 교환
    • .....
    • a = [1,2,3,4,5,6,7,8,9] 가 될 때 까지 반복 위와 같은 과정 반복
    • 항목이 n개인 배열에 정렬을 하면 비교 횟수는 n(n-1)/2번의 비교를 한다.

 

 

버블 정렬 예제 코드
  • BubbleSort.java
public class BubbleSort {
    public static void main(String[] args) {
        int [] arr = {5,2,8,3,1};
        bubbleSort(arr);
        System.out.println(Arrays.toString(arr));
    }
    static void bubbleSort(int[] arr) {
        // 이전 값을 뒤에 넣기 위해 임시 저장소 필요
        int temp = 0;
        // 총 라운드 : 배열 크기 - 1번
        for(int i = 0; i < arr.length; i++) {
            // 각 라운드별 비교 횟수 : 배열크기 - 라운드 횟수
            for(int j = 0; j < arr.length-1-i; j++) {
                if(arr[j] > arr[j+1]) {
                    temp = arr[j];
                    arr[j] = arr[j+1];
                    arr[j+1] = temp;
                }
            }
        }
    }
}
728x90

'알고리즘 & 자료구조 & 네트워크' 카테고리의 다른 글

삽입 정렬(Insertion Sort)  (0) 2021.12.01
선택 정렬(Selection Sort)  (0) 2021.12.01
정렬(Sort)  (0) 2021.12.01
트리(Tree)  (0) 2021.11.30
컬렉션 프레임워크 - Map(HashMap)  (0) 2021.11.30
Comments