본문 바로가기

CS STUDY/알고리즘

삽입정렬(Insertion Sort)

삽입정렬(Insertion Sort)

개념
  • 자료 배열의 모든 요소를 앞에서부터 차례로 이미 정렬된 배열 부분과 비교해서 자신의 위치를 찾아 삽입

 

코드
def insertion_sort(arr):
    for end in range(1, len(arr)):
        for i in range(end, 0, -1):
            if arr[i - 1] > arr[i]:
                arr[i - 1], arr[i] = arr[i], arr[i - 1]
특징
  • 장점
    • 안정한 정렬
    • 데이터가 이미 정렬되어 있는 경우에 효율적
    • 버블 정렬, 선택 정렬에 비해 상대적으로 빠름 
    • in-place sorting 알고리즘
  • 단점
    • 여전히 비교적 많은 레코드들의 이동을 포함
시간 복잡도
  • 최선(Best)
    • 이동 없이 1번의 비교만 행해짐 => O(N)
  • 최악(Worst)
    • 입력 자료가 역순인 경우
    • O(N^2)
최적화 
  • 불필요한 비교 작업 제거
def insertion_sort(arr):
    for end in range(1, len(arr)):
        i = end
        while i > 0 and arr[i - 1] > arr[i]:
            arr[i - 1], arr[i] = arr[i], arr[i - 1]
            i -= 1

 

 

참고

https://gmlwjd9405.github.io/2018/05/06/algorithm-insertion-sort.html

 

[알고리즘] 삽입 정렬(insertion sort)이란 - Heee's Development Blog

Step by step goes a long way.

gmlwjd9405.github.io

 

'CS STUDY > 알고리즘' 카테고리의 다른 글

힙 정렬(Heap Sort)  (0) 2024.03.12
병합 정렬(Merge Sort)  (0) 2024.03.05
퀵 정렬(Quick Sort)  (0) 2024.03.04
선택 정렬(Selection Sort)  (0) 2024.02.25
거품 정렬(Bubble Sort)  (0) 2024.02.25