1. 알고리즘 개요
- 외워야 하는 것 : 정렬되지 않은 원소를 정렬된 리스트에 적합한 위치를 찾아 삽입하는 것
- 시간복잡도 : $O(n^2)$
- 특징 : 거의 정렬이 되어있는 문제에는 빠르다 (inner loop가 줄어든다)
2. 소스코드
void insertion_sort(int *arr, int size){
for(int i = 1 ; i < size ; i ++){
int curr = arr[i];
int j = i - 1;
// 아래에서 j 써야해서 여기에서 선언
for(; curr < arr[j] && j >= 0; j--){
//arr[j]가 curr보다 크면 점점 앞으로 감
arr[j + 1] = arr[j];
}
arr[j + 1] = curr;
}
}
3. Reference
'알고리즘' 카테고리의 다른 글
정렬 (6) - 퀵 정렬 (Quick Sort) (0) | 2020.02.11 |
---|---|
정렬 (5) - 느린 정렬 알고리즘 비교 (0) | 2020.02.11 |
정렬 (4) - 버블 정렬 (Bubble Sort) (0) | 2020.02.11 |
정렬 (2) - 선택 정렬 (Selection Sort) (0) | 2020.02.11 |
정렬 (1) - 개요 (0) | 2020.02.11 |
재귀 (7) - 메모이제이션 (Memoization) (1) | 2020.02.04 |
재귀 (6) - 파일 탐색 (File Finding) (0) | 2020.02.04 |