선택 정렬
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)
'기초지식 > 알고리즘' 카테고리의 다른 글
자연수 n 을 뒤집어 배열 형태로 만들기 (0) | 2019.06.11 |
---|---|
프로그래머스 문제(자연수 n 의 합계) (0) | 2019.06.05 |
문자열 다루기 기본 (0) | 2019.03.18 |
이상한 문자 만들기 (0) | 2019.03.14 |
(약수의 합)자연수 n 을 입력받아 n 의 약수를 모두 더한 값을 리턴 (0) | 2019.01.28 |