알고리즘

알고리즘 – 삽입 정렬 (Insertion Sort)

  • 삽입 정렬 (Insertion Sort) 이란?
    • 두 번째 원소부터 자신의 앞에 먼저 정렬된 리스트 안에서 자신의 위치를 찾아 삽입하여 정렬하는 알고리즘
      • 비교 정렬에 속함
    • 삽입 정렬 특징
      • 최적의 상태에서 굉장히 빠른 성능을 가진 알고리즘 – O(N)
      • 최악의 경우 O(N2) 로 성능의 편차가 심함
      • 구현이 쉬움
  • 예제 – 오름차순
# Python Code

arr = [3,1,6,0,1,9,4]
N = len(arr)

for i in range(1, N):
    temp = arr[i]
    for j in range(i, 0, -1):
        if temp < arr[j-1]:
            arr[j] = arr[j-1]
            arr[j-1] = temp
        else:
            break

print(arr)
# [0, 1, 1, 3, 4, 6, 9]
  • 과정 – 오름차순
정렬 전 초기 배열의 모습

두 번째 원소부터 비교를 시작하며 자신의 앞에 정렬된 리스트 내에서 자신의 위치를 찾아 삽입합니다.

동작 원리 (두 번째 배열)
세 번째 배열의 경우 앞서 정렬된 배열 중 자신보단 큰 값이 존재하지않아 변경되지않습니다
네 번째 배열을 기준 값으로 추출 후 세 번째 배열과 비교한 결과 세 번째 배열 값이 더 크므로 세 번째 배열을 네 번째 배열로 이동
두 번째 배열 값 역시 기준 값보다 크므로 세 번째 배열로 이동
첫 번째 배열 값 역시 기준 값보다 크므로 두 번째 배열로 이동
첫 번째 배열 이후 값은 존재하지 않으므로 기준 값을 첫 번째 배열에 삽입

위 과정을 반복하여 마지막 배열까지 정렬 시 아래와 같이 완성됩니다!

최종 정렬

이상으로 삽입 정렬에 대한 설명을 마칩니다! 😀

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 항목은 *(으)로 표시합니다

이 사이트는 스팸을 줄이는 아키스밋을 사용합니다. 댓글이 어떻게 처리되는지 알아보십시오.