선택 정렬
for loop 가 2개(부모 for loop, 자식 for loop)
첫번째 인덱스에 가장 작은 값을 찾아 할당
- a[1] 에 가장 작은 값을 찾기 위해 자식 for loop 를 전체 순회
- a[2] 에 두번재 작은 값을 찾기 위해 두번째 인덱스(부모 for loop 순회 2번째(a[1]) 코드 순회 시작...
코드 구현
def selection_sort(a):
for i in range(0, len(a)-1):
min_idx = i # 아래의 자식 for loop 를 돌고 가장 작은 값이 minimum 에 저장
for j in range(i, len(a)): # 부모 for loop 의 포인터가 하나씩 옮겨갈 때마다 자식 for loop 는 부지런하게 끝까지 순회
if a[min_idx] > a[j]: # 자식 for loop 를 돌면서 가장 작은 값을 찾기
min_idx = j # 찾았으면 실제 값을 minimum 에 할당
a[min_idx], a[i] = a[i], a[min_idx] # 자식 for loop 를 다 돌고 가장 작은 값을 minimum 에 할당(저장)
print(f' ->> 정렬 과정: {a}')
코드 실행
a = [54, 88, 77, 26, 93, 17, 49, 10, 77, 11]
print('정렬 전:\t', end='')
print(a)
print()
selection_sort(a)
print()
print('정렬 후:\t', end='')
print(a)