- 정렬할 자료를 두 개의 부분집합 S와 U로 가정
부분집합 S
: 정렬된 앞부분의 원소들부분집합 U
: 아직 정렬되지 않은 나머지 원소들
- 정렬되지 않은 부분집합 U의 원소를 하나씩 꺼내서 이미 정렬되어있는 부분집합 S의 마지막 원소부터 비교하면서 위치를 찾아 삽입한다.
- 삽입 정렬을 반복하면서 부분집합 S의 원소는 하나씩 늘리고 부분집합 U의 원소는 하나씩 감소하게 된다.
- 부분집합 U가 공집합이 되면 삽입정렬이 완성된다
- O (n ^ 2)
- 각 부분집합의 원소를 매번 비교해야 하므로!
arr = [69, 10, 30, 2, 16, 8, 31, 22]
N = len(arr)
for i in range(1,N): # 1 ~ N-1
tmp = arr[i]
print(arr[:i], arr[i:])
j = i -1
while j >= 0 and arr[j] > tmp:
arr[j+1] = arr[j]
j -= 1
arr[j+1] = tmp
print(arr)