알고리즘
[알고리즘] 선택 정렬(Selection Sort)
gksdydrkfl의 공부방!
2023. 7. 18. 18:43
선택 정렬(Selection Sort)
선택 정렬 이란?
- 주어진 리스트 중에 최소값을 찾는다.
- 그 값을 맨 앞에 위치한 값과 교체한다.
- 맨 처음 위치를 뺀 나머지 리스트를 같은 방법으로 교체한다.
- 시간복잡도는 O(n^2) 이다.
선택 정렬 과정

리스트의 배열 0~4번까지 순차적으로 돌면서 제일 작은 숫자의 찾아 인덱스를 저장한다.
이때 3의 인덱스를 가지게 된다.

위에서 찾은 3번의 인덱스를 0번의 인덱스를 참조해 교체한다.

0번의 인덱스는 제외하고 1~4번까지 다시 순차적으로 돌면서 제일 작은 숫자의 인덱스를 저장한다.
이때 2의 인덱스를 가지게 된다.

위에서 찾은 2번의 인덱스를 1번의 인덱스를 참조해 교체한다.

0,1번의 인덱스는 제외하고 2~4번까지 다시 순차적으로 돌면서 제일 작은 숫자의 인덱스를 저장한다.
이때 3번의 인덱스를 가지게 된다.

위에서 찾은 3번의 인덱스를 2번의 인덱스를 참조해 교체한다.
이런 과정을 통해 정렬을 할 수 있다.
선택 정렬 코드
#include <iostream>
int main()
{
int Array[5] = { 4,3,2,1,5 };
int Count = 5;
int Index = 0;
for (int i = 0; i < Count; ++i)
{
Index = i;
for (int j = i + 1; j < Count; ++j)
{
if (Array[Index] > Array[j])
{
Index = j;
}
}
int Temp = Array[Index];
Array[Index] = Array[i];
Array[i] = Temp;
}
for (int i = 0; i < Count; ++i)
{
std::cout << Array[i] << " ";
}
}