하랑이 코딩

컴퓨터공학/알고리즘

알고리즘 - 버블정렬(bubble sort) c#

하랑이~! 2024. 6. 6. 18:20

버블정렬(bubble sort)


옆에 있는 값과 비교해서 더 작은 값을 앞으로 보내면 어떨까? 해서 나온 답이 >> 버블 정렬은 서로 이웃한 데이터들을 비교하며 가장 큰 데이터를 가장 뒤로 보내는 정렬방식이다.

 

버블정렬 과정

  1. 첫 번째 데이터와 두 번째 데이터를 비교하여 첫 번째 값이 더 크면 두 번째 데이터와 교환한다.
  2. 두 번째 데이터와 세 번째 데이터를 비교하여 더 큰 수를 뒤로 보낸다.
  3. 이렇게 끝까지 진행하면, 제일 큰 숫자가 맨 뒤로 가게 된다. 이렇게 계속 처음부터 n-1번째 데이터를 비교해서 정렬하는 알고리즘이다.

 

버블정렬(bubble sort) 이론


지금 아래사진 선택 정렬 해보겠습니다.

 

버블 정렬 기본

 

 

버블 정렬

 

그림처럼 총 5번 반복하면 1,2,3,4,5로 정렬이 됩니다.

바로 위에서 설명한 것처럼 옆에 있는 값과 비교해서 더 작은 값을 앞으로 보내면 어떨까? 를 생각하시고 그림을 확인하시면 더 이해가 잘 될 겁니다.

 

버블정렬(bubble sort) 코드


using System;
using System.Collections.Generic;

class Program
{
    static void Main(string[] args)
    {
        List<int> list = new List<int> { 5, 4, 1, 2, 3 };
        Console.WriteLine("정렬 하기 전 리스트 안:");
        PrintList(list);

        BubbleSort(list);

        Console.WriteLine("정렬 하기 후 리스트 안:");
        PrintList(list);
    }

    static void BubbleSort(List<int> list)
    {
        int n = list.Count;
        for (int i = 0; i < n - 1; i++)
        {
            // 마지막 i개의 요소는 이미 정렬되어 있으므로 반복할 필요가 없음
            for (int j = 0; j < n - i - 1; j++)
            {
                // 인접한 두 요소를 비교하여 순서가 잘못된 경우 교환
                if (list[j] > list[j + 1])
                {
                    int temp = list[j];
                    list[j] = list[j + 1];
                    list[j + 1] = temp;
                }
            }
        }
    }

    static void PrintList(List<int> list)
    {
        foreach (int item in list)
        {
            Console.Write(item + " ");
        }
        Console.WriteLine();
    }
}

 

728x90