알고리즘 - 버블정렬) 복습을 위해 작성하는 글 2023-04-09

rizz·2023년 4월 9일
0

알고리즘

목록 보기
4/15

📒 갈무리 - 버블정렬(Bubble Sort)

📌 버블정렬이란?

- 서로 이웃한 데이터들을 비교하며 가장 큰 데이터를 가장 뒤로 보내는 정렬방식 이다.

 

📌 버블정렬 진행 순서

1. 첫번째 데이터와 두번째 데이터를 비교하여 첫번째 값이 더 크면 두번째 데이터와 교환한다.

2. 두번째 데이터와 세번째 데이터를 비교하여 더 큰 수를 뒤로 보낸다.

3. 위 순서를 반복하면 제일 큰 숫자가 맨 뒤로가게 된다.

- 이렇듯, 처음부터 n-1번째 데이터까지 반복하며 비교해서 정렬하는 알고리즘이다.

 

📌 직접 구현해 보자...

// C#
        public void BubbleSort(int[] data)
        {
            for (int i = 0; i < data.Length - 1; i++)
            {
                for (int j = 0; j < data.Length - 1 - i; j++)
                {
                    if (data[j] > data[j + 1])
                    {
                        Swap(ref data[j], ref data[j + 1]);
                    }
                }
            }
        }

        public void Swap(ref int number1, ref int number2)
        {
            int temp = number1;
            number1 = number2;
            number2 = temp;
        }
        // 가독성을 위해 각 기능마다 함수로 분리하면 좋지만, 지금은 편의상 간단하게 구현함

 

📌 버블정렬의 특징

- 구현은 단순하지만 비교적 성능이 좋지 않다.

- 데이터의 모든 요소와 교환해야 한다.

- 이미 정렬된 데이터도 교환되는 일이 발생한다.

- 선택정렬과 동일하게 O(n²)의 시간 복잡도 이지만, 실제로는 선택정렬보다 좋지 않은 효율을 띈다.

- 선택정렬은 최솟값을 찾아서 매 회차마다 한 번씩만 Swap이 일어나지만, 버블정렬은 회차마다 여러 번의 Swap이 발생하기 때문이다.

profile
복습하기 위해 쓰는 글

0개의 댓글