Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
Tags
- 레드아보
- LIS #가장긴증가하는부분수열 #
- boj #백준
- 코딩
- 사이클 없는 그래프
- 3D #Reconstruction #computer #vision #volume #metric #tsdf #kinect #fusion
- 백준 #다익스트라 #dijkstra #9370 #c++
- 30870
- 줄어드는수
- 진법변환 #2to10 #10to2 #이진법 #십진법 #변환 #bitset #c++
- 20117
- BOJ
- 3343
- 1174
- c++ #boj #
- N번째큰수
- C++
- 백준
- graph
- backtracking #codetree #디버깅 #삼성코테
- graph #최단경로
- 호반우 상인
- hcpc
- c++ #입출력 #속도 #ios #sync_with_stdio #cin #cout #tie
- 22869
- 최소 #공배수 #최대 #공약수 #유클리드 #호제법 #lcm #gcd #c++ #boj #3343 #백준 #장미
- 16202
- 쌤쌤쌤
- 이분탐색 #dp #11053
- 투포인터 #백준 #boj #20922 #22862
Archives
- Today
- Total
hyunjin
insertion sort(삽입 정렬) 알고리즘 본문
728x90
데이터 정렬 이유 : 탐색을 위해서 (정렬이 탐색보다 시간이 덜 걸린다 했나?..)
1. 삽입 정렬(Insertion Sort)
- 두 번째 원소부터 맨 마지막 원소까지 각 원소가 왼쪽에 있는 모든 원소 보다 크거나 같을 때 까지 왼쪽으로 이동
- 현재 위치보다 아래쪽 순회하며 알맞은 위치에 넣는 정렬
//insertion sort
#include <vector>
using namespace std;
template <typename T>
void insertSort( Vector<T>* v, const int l, const int r){
for(int i = l+1 ; i < r; i++){
for( j = i ; j > left && v[j] < v[j-1] ; j--){
swap(v[j-1],v[j]);
}
}
}
- 이미 정렬되어 있는 자료 구조에선 하나씩 삽입/제거 하는 경우엔 현실적을 최고의 정렬 알고리즘
- 탐색을 제외한 오버헤드 적음
- 배열이 작을 때 상당히 효율적
- 배열 사이즈 클 땐 O(nlogn) 알고리즘 쓰다가 정렬할 부분 작을 땐 삽입 정렬로 전환하는 것들도 있음
정렬 시간 복잡도
평균 : O(n²) ( O(n2) 중 빠른 편)
최선 : O(n) ( 가장 바깥 for문만 실행되기 때문에 )
최악 : 내림차순 배열되어 있다면
2.Merge Sort
. 버블 정렬 : 가장 쉽지만, 시간 복잡도 가능 높아 효율적이지 않음
. 선택 정렬 : 버블 정렬과 알고리즘 유사. 가장 큰 수 찾아 배열의 마지막 위치와 교환
참고
728x90
'개인 공부 > 알고리즘' 카테고리의 다른 글
imos 알고리즘 - 누적합 문제 효율적으로 푸는 방법 (0) | 2024.06.30 |
---|---|
[C++] DFS 깊이 우선 탐색 알고리즘 (0) | 2021.02.18 |
[C++] BFS 너비 우선 탐색 알고리즘 (0) | 2021.02.18 |
유클리드 호제법 알고리즘, 최대공약수, 최소공배수 (0) | 2021.02.16 |
Dynamic Programming이란? (0) | 2021.02.03 |