-
[알고리즘] 기본 정렬 알고리즘[버블 정렬, 삽입 정렬, 선택 정렬] - ItisFutureAlgorithm 2022. 9. 14. 22:13
버블 정렬
---- for문을 한 번 돌면 마지막에는 무조건 큰 숫자가 담긴다
---- 매번 처음 인덱스 부터 시작
---- 기준 인덱스와 바로 뒤 인덱스를 비교하여 앞이 크면 자리를 바꾼다.
def bubblesort(ary): for idx1 in range(len(ary) - 1): # 길이보다 하나 작게 반복할거야 for idx2 in range(len(ary) - idx1 - 1): # 매번 처음부터 시작, 끝은 길이에 반복 횟수와 1을 빼줌 -> 왜 1을 빼줘? if ary[idx2] > ary[idx2+1]: # 기준보다 하나 큰 인덱스를 사용하기 때문에 ary[idx2], ary[idx2+1] = ary[idx2+1], ary[idx2] return ary
삽입 정렬
- 기준과 기준 다음의 데이터를 비교하고 기준보다 작으면 기준 역순으로 작을 때마다 자리를 바꿔주며 정렬하는 것
def insert_sort(ary): for idx1 in range(len(ary)-1): if ary[idx1] > ary[idx1 + 1]: for idx2 in range(idx1+1,0,-1): if ary[idx2-1] > ary[idx2]: ary[idx2-1], ary[idx2] = ary[idx2], ary[idx2-1] else: break return ary
선택 정렬
- 시작 값에서부터 리스트의 최솟값을 찾아 시작 값과 바꿔준다.
def select_sort(ary): for idx1 in range(len(ary)-1): low_idx = idx1 for idx2 in range(idx1+1, len(ary)): if ary[idx2] < ary[low_idx]: low_idx = idx2 ary[idx1],ary[low_idx] = ary[low_idx], ary[idx1] return ary
'Algorithm' 카테고리의 다른 글
[알고리즘] 더하거나 빼거나 - ItisFuture (0) 2022.09.13