1 분 소요

Description

왼쪽에서부터 한 자리씩 정렬해 나간다
기준이 되는 숫자와 나머지 숫자를 비교하여 작은 수를 왼쪽으로 보내면 된다 (오름차순)
시간 복잡도 = O(N^2) 이다

Desc1
2와 5중에 2가 더 작은 수이기 때문에 다음으로 넘어간다


Desc2
2와 7을 비교 한다, 자리바꿈 없음


Desc3
2와 8을 비교 한다, 자리바꿈 없음


Desc4
2와 4를 비교 한다, 자리바꿈 없음


Desc5
2와 9를 비교 한다, 자리바꿈 없음


Desc6
2와 3을 비교한다, 자리바꿈 없음


Desc7
2와 1을 비교 한다, 1이 더 작기 때문에 자리를 바꾼다


Desc8
1과 6을 비교한다, 자리바꿈 없음


Desc9
한 번 정렬이 실행되어 배열의 첫 번째 index에는 가장 작은 숫자가 오게된다
이제 기준이 되는 [index = 1]에 있는 숫자 5부터 다시 정렬 과정을 반복한다


Cord

#include <iostream>

using namespace std;

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

    // Selection sort 실행
    for (int i = 0; i < 9; i++)
    {
        for (int j = i + 1; j < 9; j++)
        {
            // 왼쪽에서 부터 작은 수로 채운다
            if (dataArr[i] > dataArr[j])
            {
                int temp = dataArr[i];
                dataArr[i] = dataArr[j];
                dataArr[j] = 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 << " }";
    cout << "\n\n\n\n\n\n\n";
    return 0;
}

Result

Result