선택정렬(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)

 

+ Recent posts