삽입정렬
- 적절한 위치에 삽입 하는 것
- 처음부터 왼쪽에 있는 원소와 비교해서 해당 원소가 비교값보다 작다면 왼쪽으로 이동하는 식으로
더 큰 수를 만날때까지 반복해준다.
- 항상 왼쪽에 있는 것은 정렬되어 있다고 가정되어 있음. 즉, 멈출 코드를 알고 있다는 것. (왼쪽의 원소값보다 해당값이 크면 멈추면 된다.)
- 시간 복잡도(Big O) : 10 + 9 + 8 + 7 ... + 1
=> O(N^2)
- Big O는 선택/버블과 같지만 실제로는 선택/버블/삽입 중에서는 삽입이 제일 연산이 적다.
- 거의 정렬된 상태의 정렬을 삽입 정렬로 한다. => 삽입 정렬이 굉장히 빨라짐
// 삽입정렬 insertion sort
#include <iostream>
using namespace std;
int main(void) {
int i, j, temp;
int array[10] = { 1, 10, 5, 8, 7, 6, 4 ,3, 2, 9 };
for (i = 0; i < 9; i++) {
j = i;
while (j >= 0 && array[j] > array[j + 1]) {
temp = array[j];
array[j] = array[j + 1];
array[j + 1] = temp;
j--;
}
}
for (i = 0; i < 10; i++) {
cout << array[i] << " ";
}
return 0;
}
'[알고리즘] 문제풀이 연습' 카테고리의 다른 글
[DP] 백준 11726, 11727 - 2xn 타일링 (0) | 2019.07.04 |
---|---|
백준 10219 - meats on the grill : reverse함수 등 (0) | 2019.07.04 |
백준 3052 - 나머지 : [c++ STL] set 이용 (0) | 2019.07.02 |
2) 알고리즘 : 정렬 - 버블정렬(Bubble Sort) (0) | 2019.07.01 |
1) 알고리즘 : 정렬 - 선택정렬(selection sort) (0) | 2019.07.01 |