본문 바로가기
카테고리 없음

선택정렬

by useSword 2024. 3. 11.

가장 작은 것을 선택해서 제일 앞으로 보내면 어떨까?

 

<작동방식>

1. 리스트에서 가장 작은 값을 찾습니다.
 
2. 가장 작은 값을 맨 앞에 위치시킵니다.
 
3. 맨 앞에 있는 값을 제외한 리스트에서 다시 가장 작은 값을 찾습니다.
 
4. 찾은 값을 두 번째 위치에 위치시킵니다.
 
5. 2-4 단계를 리스트의 모든 원소가 정렬될 때까지 반복합니다.
 

<예시>

 

//초기모습
10 1 5 8 7 6 4 3 2 9 //가장 작은 1을 골라 맨앞에 배치를 바꿉니다.
//1회
1 10 5 8 7 6 4 3 2 9 //다음으로 작은 2를 골라 2번째에 배치합니다
//2회
1 2 10 5 8 7 6 4 3 9 //다음으로 작은 3를 골라 3번재에 배치합니다
//3회
1 2 3 10 8 7 6 4 5 9 //다음으로 작은 4를 골라 4번째에 배치합니다.
...
1 2 3 4 5 6 7 8 9 10

 

<코드>

 

data = [10, 1, 5, 8, 7, 6, 4, 3, 2, 9]


def selection_sort(data):
    for i in range(0, len(data)-1):
        min_value = i
        for j in range(i+1, len(data)):
            if data[j] < data[min_value]:
                min_value = j
        data[i], data[min_value] = data[min_value], data[i]