가장 작은 것을 선택해서 제일 앞으로 보내면 어떨까?
<작동방식>
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]