def insertion(arr, a, b):
for i in range(a+1, b+1):
key = arr[i]
j = 0
for j in range(i-1, a-2, -1):
if arr[j] > key:
arr[j+1] = arr[j]
else:
break
arr[j+1] = key
3. Discussion
삽입 정렬은 stable한 정렬에 속하며 in-place한 알고리즘에 속한다.
삽입 정렬은 리스트가 정렬될수록 효율이 증가하며, 특히 이미 정렬된 리스트를 정렬할 경우 시간복잡도가 $O(n)$으로 가장 빠르다. 이런 장점덕에 삽입정렬은 다른 정렬에 hybrid하게 쓰이기도 한다.