개발/Algorithm
[Sort]Insertion Sort(삽입 정렬)
grulsuitg
2022. 6. 20. 17:27
설명
- 주어진 키를 정렬된 리스트 중 자신의 위치에 삽입(Insertion)하면서 정렬하는 알고리즘
- 손 안에 카드를 정렬 하는 것과 유사하다.
예제
Pseudo Code
INSERTIONN-SORT(A)
for j = 2 to A.length //첫번째 원소는 이미 정렬된 리스트라고 생각해 2번째 원소부터 정렬한다.
key = A[j] // 정렬을 수행할 원소
i = j - 1
// 오름차순 정렬
while i > 0 and A[i] > key // j - 1 부터 1 번째 index로 가면서 삽입 될 위치를 찾는다.
A[i+1] = A[i]
i = i - 1
A[i + 1] = key
시간 복잡도
1. Best Case
7행에 있는 while 문이 실행되지 않는다
→ \(O(N)\)
2. Worst Case
7행에 있는 while 문이 j-1 부터 1 까지 모두 실행된다
→ \(O(N^2)\)
장점
- 단순한 구현
- Stable Sort(안정 정렬) 이다.
- In-Place Sort 이다.
단점
- 입력 데이터에 민감하다.
- 비효율적인 시간 복잡도
참고 자료
- Introduction to Algorithms, 3rd Ed
- tmxklab