C# 정렬 알고리즘 - 버블정렬(Bubble sort)

728x90
  • 버블정렬(Bubble sort)이란?

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

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

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

3. 이렇게 끝까지 진행하면, 제일 큰 숫자가 맨 뒤로 가게 된다. 이렇게 계속 처음부터 n-1번째 데이터를 비교해서 정렬하
   는 알고리즘이다.

 

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace BubbleSort
{
    class Program
    {
        static void Main(string[] args)
        {
            int[] nArrData = { 20, 15, 1, 5, 10 };

            Console.WriteLine("버블정렬");

            Console.Write("시작값 : ");

            for(int i = 0; i < nArrData.Length; i++)
            {
                Console.Write(nArrData[i].ToString() + ",");
            }

            Console.WriteLine();

            //구현
            for(int i = 0; i < nArrData.Length - 1 ; i++)
            {
                for(int j = 0; j < nArrData.Length - 1 - i; j++)
                {
                    if(nArrData[j] > nArrData[j + 1])
                    {
                        Swap(ref nArrData[j], ref nArrData[j + 1]);
                    }

                    //첫번째 정렬값(0, 1) : 20, 5, 10, 15 ...
                    Console.Write((i + 1) + "번째 정렬값(" + j + ", " + (j + 1) + ") : ");

                    for(int k = 0; k < nArrData.Length; k++)
                    {
                        Console.Write(nArrData[k].ToString() + ", ");
                    }

                    Console.WriteLine();
                }
            }
        }

        static void Swap(ref int a, ref int b)
        {
            int temp = a;
            a = b;
            b = temp;
        }
    }
}

 

  • 버블정렬의 특징

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

- 배열의 모든 요소와 교환해야 한다.

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

728x90