Algorithm
선택정렬 (Selection Sort)
choice91
2022. 7. 25. 20:24
728x90
반응형
📌 선택정렬 (Selection Sort)
주어진 리스트에서 가장 작은 값을 찾고 그 값을 맨 앞에 있는 값과 교체한다.
그리고 맨 처음 위치를 제외한 나머지 리스트를 같은 방법으로 교체하는 방법이다.
버블 정렬과 마찬가지로 O(n^2)의 시간복잡도를 갖는다.
👉 과정
[3, 4, 2, 5, 1]
최소값인 1과 3 swap
[1, 4, 2, 5, 3]
최소값 2와 4 swap
[1, 2, 4, 5, 3]
최소값 3과 4 swap
[1, 2, 3, 5, 4]
최소값 4와 5 swap
[1, 2, 3, 4, 5]
남은 숫자가 5 하나 남았기 때문에 자동으로 5가 최소값이 된다.
[1, 2, 3, 4, 5]
정렬 끝
👉 구현
def selection_sort(arr):
for i in range(len(arr)):
lowest = i
for j in range(i + 1, len(arr)):
if arr[j] < arr[lowest]:
lowest = j
if i != lowest:
arr[i], arr[lowest] = arr[lowest], arr[i]
return arr
👉 swap 수를 적게
버블정렬은 두 수를 비교해서 루프가 끝날 때까지 스왑을 하지만 선택정렬은 최소값을 찾아 swap을 하기 때문에 루프당 1번의 swap으로 버블정렬보다는 더 적은 swap을 한다.
728x90
반응형