728x90
반응형
다른 정렬 알고리즘보다 더 일상적인 방법의 알고리즘이라 할 수 있는 것이 바로 선택 정렬
1. 전체 값 중 가장 작은 값을 찾음
2. 해당 값을 맨 첫번째에 배치함
3. 첫번째 값을 제외하고 가장 작은 값을 찾아 두번째에 배치함
4. 두번째, 세번째, ... n-1번째 값을 제외하고 가장 작은 값을 찾아 정해진 위치에 배치함.
선택 정렬의 시간복잡도
중간에 정렬된 상태라면 종료될 수 있는 버블 정렬과는 다르게, 선택 정렬의 경우 반드시 번의 비교 연산을 수행해야 하기 때문에 약 번의 연산을 필요로 합니다.
시간복잡도는
def selection_sort(arr):
n = len(arr)
for i in range(n):
min_idx = i
for j in range(i + 1, n):
if arr[j] < arr[min_idx]:
min_idx = j
arr[i], arr[min_idx] = arr[min_idx], arr[i]
n = int(input())
elements = list(map(int, input().split()))
selection_sort(elements)
print(*elements)
728x90
반응형
'Language-LAB > Algorithm' 카테고리의 다른 글
[알고리즘] 병합정렬 (Merge Sort) (0) | 2023.07.09 |
---|---|
[알고리즘] 퀵정렬(Quick Sort) (0) | 2023.07.09 |
[알고리즘] 삽입정렬(Insertion Sort) (0) | 2023.07.08 |
[알고리즘] 하노이의 탑 (0) | 2023.07.03 |
[알고리즘] 리스트의 중복항목 탐색 (0) | 2023.06.27 |