# 선택 정렬
## 목차
---
1. 무엇?
2. 특징?
3. 알고리즘
## 1. 무엇?
---
제자리 정렬 알고리즘의 하나. 아래와 같은 흐름으로 동작.
1. 주어진 리스트 중 최소값을 찾음
2. 그 값을 맨 앞에 위치한 값과 교체
3. 맨 처음 위치를 뺀 나머지 리스트를 같은 방법으로 교체
## 2. 특징?
---
- 추가 메모리가 필요 X
- 느림, 시간 복잡도 O(n^2)
## 3. 알고리즘
---

### 의사 코드
```
for i = 0 to n:
a[i]부터 a[n - 1]까지 차례로 비교하여 가장 작은 값이 a[j]에 있다고 하자.
a[i]와 a[j]의 값을 서로 맞바꾼다.
```
### 소스코드
```
void selectionSort(int[] list) {
int indexMin, temp;
for (int i = 0; i < list.length - 1; i++) {
indexMin = i;
for (int j = i + 1; j < list.length; j++) {
if (list[j] < list[indexMin]) {
indexMin = j;
}
}
temp = list[indexMin];
list[indexMin] = list[i];
list[i] = temp;
}
}
```
## 요약
---
## Ref.
---
1. https://codepumpkin.com/selection-sort-algorithms/