반응형
삽입 정렬(Insertion Sort)
삽입 정렬 이란?
- 이미 정렬되어 있는 것에 하나씩 추가해 정렬하는 방법
- 대상이 이미 정렬되어 있다면 매우 빠른 속도로 동작한다.
- N개의 데이터가 주어졌을 때 O($N^2$)의 시간복잡도를 가진다.
삽입 정렬 예시
삽입 정렬 코드(C++)
#include <iostream>
#include <vector>
using namespace std;
void insertionSort(vector<int> &vec)
{
int i, j, data;
for (i = 1; i < vec.size(); i++)
{
data = vec[i];
for (j = i - 1; j >= 0; j--)
{
if (vec[j] > data)
{
vec[j + 1] = vec[j];
}
else
break;
}
vec[j + 1] = data;
}
}
int main() {
ios_base::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
vector<int> vec{ 7,1,8,3,5,2};
cout << "정렬 전 : ";
for (auto i : vec)
cout << i << ", ";
cout << endl;
insertionSort(vec);
cout << "정렬 후 : ";
for (auto i : vec)
cout << i << ", ";
cout << endl;
return 0;
}
반응형
'알고리즘 > 알고리즘 이론' 카테고리의 다른 글
정렬 알고리즘 - 퀵 정렬(Quick Sort) (0) | 2020.06.16 |
---|---|
정렬 알고리즘 - 병합 정렬(Merge Sort) (0) | 2020.06.16 |
정렬 알고리즘 - 선택 정렬(Selection Sort) (0) | 2020.06.11 |
정렬 알고리즘 - 버블 정렬(Bubble Sort) (0) | 2020.06.08 |
알고리즘을 위한 자료구조 - 힙(Heap) (0) | 2020.06.08 |
댓글