삽입정렬이란?
- 두번째 인덱스부터 시작한다
- key값 앞에 있는 데이터(front)부터 비교해서 key < front 이면, front값을 뒤 인덱스로 복사
- key보다 작은 데이터를 만날때까지 반복, 작은 데이터를 만나면 바로 뒤에 key값을 이동
- 예 : data_list = [9, 3, 2, 5]
- 1번째 실행 : key=9, [9,3,2,5]
- 2번째 실행 : key=3, front=9, 자리바꿈 [3,9,2,5]
- 3번째 실행 : key=2, front=9, 자리바꿈 / key=2, front=3, 자리바꿈 [2,3,9,5]
- 4번째 실행 : key=5, front=9, 자리바꿈 3보다 5가 크므로 끝 [2,3,5,9]
알고리즘 구현
def insertion_sort(data):
for index in range(len(data) - 1):
for index2 in range(index + 1, 0, -1):
if data[index2] < data[index2 - 1]:
data[index2], data[index2 - 1] = data[index2 - 1], data[index2]
else:
break
return data
'알고리즘 > 개념' 카테고리의 다른 글
[알고리즘] 이진 탐색 (Binary Search) (0) | 2020.02.06 |
---|---|
[알고리즘] 퀵 정렬 (quick sort) (0) | 2020.02.06 |
[알고리즘] DP (동적계획법) (0) | 2020.02.05 |
[알고리즘] 선택정렬 (selection sort) (0) | 2020.01.29 |
[알고리즘] 버블정렬 (bubble sort) (0) | 2020.01.29 |