성장일기

정렬 - 선택 정렬(selection sort) 본문

알고리즘

정렬 - 선택 정렬(selection sort)

김몽몽 2022. 2. 8. 17:44

1. 선택 정렬(selection sort) 란?

🖐 주어진 데이터 중 최소값을 찾아 맨 앞 값과 교체

🖐 맨 앞을 빼고 다시 반복 

 

Sorting (Bubble, Selection, Insertion, Merge, Quick, Counting, Radix) - VisuAlgo

VisuAlgo is free of charge for Computer Science community on earth. If you like VisuAlgo, the only "payment" that we ask of you is for you to tell the existence of VisuAlgo to other Computer Science students/instructors that you know =) via Facebook/Twitte

visualgo.net

 

2. 단순하게 생각하기

👉 최소값을 찾아라!

👉 앞부터 하나씩 결정된다!

 

3. 알고리즘 구현

✍ 데이터 갯수의 -1만큼 반복

✍ 가장 첫 자리를 lowest로 두고 시작

 더 작은 숫자가 있다면 첫 자리와 바꾸기 -> 앞부터 채워나가기 !

def selection_sort(data):
    for t in range(len(data) - 1):
        lowest = t # 가장 처음부터
        for idx in range(t+1, len(data)):
            if data[lowest] > data[idx]: # 만약 더 작은 수가 있다면
                lowest = idx
        data[lowest], data[t] = data[t], data[lowest]  
        # 만약 더 작은수가 있었다면 여기서 lowest=가장 작은 수의idx -> 가장 작은 수를 앞에서부터 채워나감
    return data

selection_sort([9,7,5,3,1])
# 출력결과: [1,3,5,7,9]

 

4. 복잡도

👉 반복문이 두 개  O(n**2)

👉 상세하게 계산하면  n*(n-1) / 2

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

정렬 - 계수 정렬 (counting sort)  (0) 2022.02.09
정렬 - 병합 정렬(merge sort)  (0) 2022.02.09
정렬 - 삽입 정렬(insertion sort)  (0) 2022.02.08
정렬 - 버블 정렬(bubble sort)  (0) 2022.02.08
유클리드 호제법  (0) 2022.01.14