728x90
728x90
삽입 정렬(Insertion Sort)
삽입 정렬(Insertion Sort)
- 배열에서 특정 key 값이 정해지고, 그 key 값 앞에 있는 배열의 요소들이 오름차순으로 정렬되어 있을 때, key 값이 삽입될 위치를 찾아서 그 위치에 key 값을 삽입하면서 정렬해 나가는 방식
- 두 번째 요소를 key 값으로 정해서 두 번째 요소가 삽입될 위치를 찾아서 첫 번째 요소부터 두 번째 요소까지 정렬시키고, 다시 세 번째 요소를 key 값으로 정해서 세 번째 요소가 삽입될 위치를 찾아서 첫 번째 요소부터 세 번째 요소까지 정렬시키고 다시 네 번째 요소를 key 값으로 정해서 네 번째 요소가 삽입될 위치를 찾아서 첫 번째 요소부터 네 번째 요소까지 정렬시키고, 다섯 번째 요소를 key 값으로 정해서 다섯 번째 요소가 삽입될 위치를 찾아서 첫 번째 요소부터 다섯 번째 요소까지 정렬시키고, ... n 번째 요소를 key 값으로 정해서 n 번째 요소가 삽입딜 위치를 찾아서 첫 번째 요소부터 n 번째 요소까지 정렬시키는 방식이다.
구현
#include <iostream>
using namespace std;
#define N 5
int main() {
int a[N] = { 7, 6, 9, 5, 8 };
int key, j;
for (int i = 1; i < N; i++) {
key = a[i];
for (j = i - 1; j >= 0 && a[j] > key; j--) {
a[j + 1] = a[j];
}
a[j + 1] = key;
}
for (int i = 0; i < N; i++) {
cout << a[i] << " ";
}
return 0;
}
더보기
5 6 7 8 9
728x90
728x90
'Computer Science > 알고리즘' 카테고리의 다른 글
[Algorithm] 형상수(Figulate Number) (0) | 2022.10.26 |
---|---|
[Algorithm] 에라토스테네스의 체(Sieve of Erathosthenes) (0) | 2022.10.25 |
[Algorithm] 소인수 분해(Prime/Integer Factorization) (0) | 2022.10.25 |
[Algorithm] 피보나치 수열(Fibonacci Sequence) (1) | 2022.10.06 |
[Algorithm] 버블 정렬(Bubble Sort) (0) | 2022.10.06 |
[Algorithm] 선택 정렬(Selection Sort) (0) | 2022.10.06 |
[Algorithm] 최대(Max), 최소(Min), 최빈(Mode) (0) | 2022.10.06 |
[Algorithm] 콜라츠 추측(Collatz Conjecture) ; 우박수(Hailstone Sequence), 3N + 1 Problem (0) | 2022.09.01 |