선택정렬(SelectionSort)
선택정렬은 리스트나 배열 전체에서 최솟값을 선택해서 리스트의 첫 번째 원소와 자리를 바꿉니다.
그 후 첫번째 요소를 제외한 나머지 요소들 중 가장 작은 값을 선택해 이를 두 번째 원소와 자리를 바꿉니다.
이 과정을 계속 리스트 크기- 1 까지 반복하면 전체를 정렬할 수 있습니다.
리스트 외에 다른 추가 메모리를 요구하지 않아 제자리 정렬(in-place sorting)이라고도 합니다.
리스트가 대체적으로 정렬되어 있던, 역으로 정렬되어 있던 항상 일정한 시간 복잡도를 나타낸다는 특징이 있습니다.
따라서 다른 정렬 알고리즘에 비해 효율성이 많이 떨어집니다.
선택정렬의 파이썬 코드입니다.
a = [2, 3, 5, 4, 1]
for i in range(len(a)-1):
mi = i
for j in range(i+1,len(a)):
if a[mi] > a[j]:
mi = j
a[i], a[mi] = a[mi], a[i]
# 결과>>[1, 2, 3, 4, 5]
print(a)
'알고리즘 > 알고리즘 이론과 구현' 카테고리의 다른 글
병합정렬(MergeSort) 이론과 파이썬 구현 (0) | 2020.05.13 |
---|---|
퀵정렬(QuickSort) 이론과 파이썬 구현 (0) | 2020.05.13 |
버블정렬(BubbleSort) 이론과 파이썬 구현 (0) | 2020.05.12 |
삽입정렬(InsertionSort) 이론과 파이썬 구현 (0) | 2020.05.11 |
정렬(Sorting) (0) | 2020.05.11 |