1 분 소요

Description

기준이 되는 숫자와 바로옆의 숫자를 비교하여 더 작은 숫자를 앞으로 보내주는 것을 반복하는 정렬 방법이다
시간 복잡도 = O(N^2) 이다

Desc1
이렇게 2와 5의 숫자를 비교한다
큰 수가 오른쪽으로 가야하기 때문에 자리를 바꾸지 않고 다음으로 넘어가면 된다


Desc2
다음으로 5와 7을 비교한다
마찬 가지로 큰 수인 7이 오른쪽에 있기 때문에 다음으로 넘어간다


Desc3
7과 8을 비교한다, 자리바꿈 없음


Desc4
이번에는 왼쪽에 있는 8이 4보다 크기 때문에 서로 자리를 바꾼다


Desc5
4와 8의 자리가 바뀌었고 8과 9를 비교한다, 자리바꿈 없음


Desc6
9와 3의 자리를 바꾼다


Desc7
9와 1의 자리를 바꾼다


Desc8
9와 6의 자리를 바꾼다> *** Desc9

이로써 정렬이 한 번 이루어져 맨 끝 자리는 제일 큰 수(9)로 확정된다
계속해서 위와 같은 과정을 반복하여 끝에서 부터 한 자리씩 수를 정렬해 나가면 된다


Cord

#include <iostream>

using namespace std;

int main()
{
    int dataArr[] = { 2, 5, 7, 8, 4, 9, 3, 1, 6 };

    // Bubble sort 실행
    for (int i = 0; i < 9; i++)
    {
        for (int j = 0; j < 8 - i; j++)
        {
            if (dataArr[j] > dataArr[j + 1])
            {
                int temp = dataArr[j];
                dataArr[j] = dataArr[j + 1];
                dataArr[j + 1] = temp;
            }
        }
    }

    // 결과 출력
    string result;
    for (int idx = 0; idx < 9; idx++)
    {
        if (idx == 8)
        {
            result += dataArr[idx] + '0';
        }
        else
        {
            result += dataArr[idx] + '0';
            result += ", ";
        }
    }
    cout << "data = {" << result << " }";
    return 0;
}

Result

Result