# 선택 정렬 (Selection Sort)

* 주어진 데이터 중 가장 작은 값부터 차례대로 **선택**해서 나열하는 방식
* 정렬되지 않은 데이터 중 가장 작은 값 선택 후 첫 번째 요소와 교환
* 시간복잡도 O(n²)

```javascript
function selectionSort(array) {
  const len = array.length;
  let minIndex, temp;
  
  for (i = 0; i < len - 1; i++) { // 처음부터 훑으면서
    minIndex = i;
    for (j = i + 1; j < len; j++) { // 최솟값 위치 찾고
      if (array[j] < array[minIndex]) {
        minIndex = j;
      }
    }
    temp = array[minIndex]; // 최솟값 저장
    array[minIndex] = array[i];
    array[i] = temp; // 최솟값을 앞으로 전달
  }
  return array;
};

selectionSort([5,1,4,7,2,6,8,3]); // [1,2,3,4,5,6,7,8]
```

![](https://3218942527-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LDh9DRX9mY5DxCBhVRu%2F-LEPPaYJMm2XUv79wk4e%2F-LEPPkKnZYX5QBFWIpS3%2Fimage.png?alt=media\&token=f9060f73-89c7-448a-8d2c-23aa6af213d6)

![](https://3218942527-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LDh9DRX9mY5DxCBhVRu%2F-LEPPaYJMm2XUv79wk4e%2F-LEPPmTAxCg9ya8thSlL%2Fimage.png?alt=media\&token=c34009ef-f857-434c-b886-feea13ec5e4f)
