선택 정렬
Description
왼쪽에서부터 한 자리씩 정렬해 나간다
기준이 되는 숫자와 나머지 숫자를 비교하여 작은 수를 왼쪽으로 보내면 된다 (오름차순)
시간 복잡도 = O(N^2)
이다
2와 5중에 2가 더 작은 수이기 때문에 다음으로 넘어간다
2와 7을 비교 한다, 자리바꿈 없음
2와 8을 비교 한다, 자리바꿈 없음
2와 4를 비교 한다, 자리바꿈 없음
2와 9를 비교 한다, 자리바꿈 없음
2와 3을 비교한다, 자리바꿈 없음
2와 1을 비교 한다, 1이 더 작기 때문에 자리를 바꾼다
1과 6을 비교한다, 자리바꿈 없음
한 번 정렬이 실행되어 배열의 첫 번째 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;
}