삽입 정렬은, 요소를 올바른 위치에 삽입해 정렬하는 방식으로, 자리 변경이 필요할 때만 위치를 변경하므로 효과적이다!
input = [4, 6, 2, 9, 1]
# 삽입 정렬
def insertion_sort(array):
n = len(array)
for i in range(1, n): # 0번째는 이미 정렬되어 있는 상태라 순회필요x
for j in range(i):
# 앞 데이터가 더 크면 변경이 필
if array[i-j-1] > array[i-j]: # 주어진 데이터의 뒤에서 부터 앞으로 검사
array[i-j-1], array[i-j] = array[i-j], array[i-j-1]
# 뒤 데이터가 더 크면 변경 필요가 x -> 반복문 돌 필요가 없음
else:
break
return array
insertion_sort(input)
print(input) # [1, 2, 4, 6, 9] 가 되어야 합니다!
print("정답 = [4, 5, 7, 7, 8] / 현재 풀이 값 = ",insertion_sort([5,8,4,7,7]))
print("정답 = [-1, 3, 9, 17] / 현재 풀이 값 = ",insertion_sort([3,-1,17,9]))
print("정답 = [-3, 32, 44, 56, 100] / 현재 풀이 값 = ",insertion_sort([100,56,-3,32,44]))
[출력]
[1, 2, 4, 6, 9]
정답 = [4, 5, 7, 7, 8] / 현재 풀이 값 = [4, 5, 7, 7, 8]
정답 = [-1, 3, 9, 17] / 현재 풀이 값 = [-1, 3, 9, 17]
정답 = [-3, 32, 44, 56, 100] / 현재 풀이 값 = [-3, 32, 44, 56, 100]