알고리즘

선택 정렬 (Selection Sort)

검정비니 2018. 6. 25. 16:58
728x90
반응형

선택 정렬 (Selection Sort)



선택 정렬은 원리가 가장 간단한 정렬 알고리즘 중의 하나이다. 우선 배열 A[1..n]에서 가장 큰 원소를 찾아 이 원소와 배열의 맨 끝자리에 있는 A[n]과 자리를 바꾼다. 이 방식을 n 번째 원소부터 2번째 원소까지 하게 되면 배열은 정렬되게 되는데, 이것이 바로 선택 정렬이다.


선택정렬의 수도코드는 다음과 같다.


selectionSort(A[], n) {

for  last  <- n 에서 2까지 반복 {

A[1..last] 중 가장 큰 수 A[k] 찾기

A[k] 와 A[last]의 값을 교환

}

}


선택정렬은 위치 변경 횟수를 줄임으로써, 버블 정렬을 일부 개선한 기법이다.


비교 횟수도 버블 정렬과 같고, 시간 복잡도 역시 O(n^2)이지만, 자리 이동 측면에서는 선택 정렬이 더 효율적이다.


- 최악 시간 복잡도 => O(n^2) 비교, O(n) 교환

- 최선 시간 복잡도 => O(n^2) 비교, O(n) 교환

- 평균 시간 복잡도 => O(n^2) 비교, O(n) 교환

- 공간 복잡도 => O(1)

반응형

'알고리즘' 카테고리의 다른 글

삽입정렬  (0) 2018.07.30
버블정렬 Bubble Sorting  (0) 2018.07.30
마스터 정리  (0) 2018.06.25
점근적 표기  (0) 2018.06.25
재귀(자기 호출)  (0) 2018.06.25