4 | 2 | 1 | 7 | 9 | 6 |
오름차순으로 정렬을 할 때, 위 배열에서 현재 원소 2를 보고있다면 2는 4보다 앞에 있어야 하기 때문에
2 | 4 | 1 | 7 | 9 | 6 |
이렇게 앞으로 한 칸 옮겨주면 됩니다.
원소 1을 올기면 4와 2를 지나쳐 맨 앞으로 옮겨줍니다.
1 | 2 | 4 | 7 | 9 | 6 |
이렇게 가장 작은 원소를 정하는 것이 아닌, 현재 보고 있는 원소를 알맞은 위치로 옮기는 것을
단순 삽입 정렬이라고 합니다.
def insertion_sort(a) -> None:
n = len(a)
for i in range(1, n):
j = i
tmp = a[i]
while j > 0 and a[j - 1] > tmp:
a[j] = a[j-1]
j -= 1
a[j] = tmp
print('단순 삽입 정렬')
num = int(input('원소 수 입력: '))
x = [None] * num
for i in range(num):
x[i] = int(input(f'x[{i}]: '))
print(''.join(str(x)))
insertion_sort(x)
print(''.join(str(x)))
insertion_sort 함수를 보겠습니다.
일단 for문이 1부터 시작하는 이유는 두 번째 원소부터 정렬을 시작하기 때문입니다.
j는 인덱스 값이고 tmp는 정렬시킬 원소입니다.
while문은 앞 인덱스와 비교해서 현재 정렬하려는 원소 값이 더 작으면 계속 바꿔주는 것입니다.
while문이 종료되면 a[j]에 삽입할 tmp를 넣어줍니다.

'IT > 알고리즘' 카테고리의 다른 글
알고리즘 - 셸 정렬 (0) | 2020.11.24 |
---|---|
알고리즘 - 이진 삽입 정렬 (0) | 2020.11.23 |
알고리즘 - 버블 정렬 (0) | 2020.11.20 |
백준 - 6603번 (0) | 2020.11.19 |
알고리즘 - 재귀 알고리즘(3) (1) | 2020.11.19 |
댓글