선택정렬과 삽입 정렬의 유사한 점과 차이점
유사점 : k번째 반복 이후, 첫번째 k 요소가 정렬된 순서로 온다는 점
차이점 : 선택정렬은 k+1번째 요소를 찾기 위해 나머지 모든 요소들을 탐색하지만 삽입정렬은 필요한 만큼의 요소만 탐색하기 때문에 훨씬 효율적으로 실행된다.
arr = [4,2,5,6,1,3]
# Solution 1
for i in range(1, len(arr)):
for j in range(i, 0, -1):
if arr[j - 1] > arr[j]:
arr[j - 1], arr[j] = arr[j], arr[j - 1]
else: # 추가된 부분
break
print(arr)
#[2, 4, 5, 6, 1, 3]
#[2, 4, 5, 6, 1, 3]
#[2, 4, 5, 6, 1, 3]
#[1, 2, 4, 5, 6, 3]
#[1, 2, 3, 4, 5, 6]
# Solution 2
for i in range(1, len(arr)):
j = i
while j>0 and arr[j-1] > arr[j]:
arr[j-1], arr[j] = arr[j], arr[j-1]
j -= 1
print(arr)