๐ฟ์ฝ์ ์ ๋ ฌ์ด๋?
๊ธฐ๋ณธ ์ ๋ ฌ ์๊ณ ๋ฆฌ์ฆ ์ค ํ๋์ด๋ฉฐ, KEY๋ฅผ ์ ํํ ๋ฐฐ์ด์ ๊ฐ๋ค๊ณผ ๋น๊ตํด๊ฐ๋ฉฐ ์ฝ์ ์ ํ ์ง ์ํ ์ง ๊ฒฐ์ ํ๋ค.
์ต์ ์ ๊ฒฝ์ฐ -> ์ด๋ฏธ ์ ๋ ฌ๋ ๋ฐฐ์ด์์๋ O(n)์ ์๊ฐ๋ณต์ก๋๋ฅผ ๊ฐ์ง๋ค.
์ต์ ์ ๊ฒฝ์ฐ -> O(n^2)์ ์๊ฐ ๋ณต์ก๋๋ฅผ ๊ฐ์ง๋ค.
๐ฟ์ต์ ์ ๊ฒฝ์ฐ๊ฐ O(n)์ธ ์ด์
๋ค๋ฅธ ๊ธฐ๋ณธ ์ ๋ ฌ์๊ณ ๋ฆฌ์ฆ๋ค๊ณผ๋ ๋ค๋ฅด๊ฒ ์ฝ์ ์ ๋ ฌ์ ์ ๋ ฌ๋ ๋ฐฐ์ด์์ O(n)์ ๊ฐ์ง๋๋ฐ
void insertion_sort(int* arr, int size) {
int i, j, key;
for (i = 1; i < size; i++) {
key = arr[i];
for (j = i - 1; j >= 0 && arr[j] > key; j--) { //***์ฌ๊ธฐ ๋ถ๋ถ๋๋ฌธ์ ์ต์ ์ ๊ฒฝ์ฐ O(n)์ ๊ฐ์ง!
arr[j + 1] = arr[j];
}
arr[j + 1] = key;
}
}
for๋ฌธ ์กฐ๊ฑด์ arr[j] > key๊ฐ ์๊ธฐ ๋๋ฌธ์ ์ด๋ฏธ ์ ๋ ฌ๋ ๋ฐฐ์ด์์๋ for๋ฌธ์ ํ์ถํ๋ ๊ฒ์ด๋ค.
๐ฟ์ฝ๋ ๋ฐ ์๋๋ฐฉ์
arr[5] = {5, 3, 4, 2, 1} ์ธ ๋ฐฐ์ด์ ์ ๋ ฌ ์ํจ๋ค๊ณ ๊ฐ์ ํ์.
โญ์ฝ๋๋ ๋ค์๊ณผ ๊ฐ๋ค!
#include <stdio.h>
void insertion_sort(int* arr, int size) {
int i, j, key;
for (i = 1; i < size; i++) {
key = arr[i];
for (j = i - 1; j >= 0 && arr[j] > key; j--) {
arr[j + 1] = arr[j];
}
arr[j + 1] = key;
}
}
int main()
{
int arr[5] = { 5, 3, 4, 2, 1 };
printf("์ ๋ ฌ ์ \n");
for (int i = 0; i < 5; i++) {
printf("%d ", arr[i]);
}
insertion_sort(arr, 5);
printf("\n์ ๋ ฌ ํ\n");
for (int i = 0; i < 5; i++) {
printf("%d ", arr[i]);
}
}
โญ๋ฃจํ์ ๋ฐ๋ผ ์๋ํ๋ ๋ฐฉ์์ ๊ทธ๋ฆผ์ผ๋ก ์์๋ณด์
- 1๋ฒ์งธ ๋ฃจํ(key = 3์ผ๋)
- 2๋ฒ์งธ ๋ฃจํ(key = 4)์ผ๋
- ..... ์ด๊ฑธ ๋ฐฐ์ด์ ํฌ๊ธฐ๋งํผ ๋ฐ๋ณตํ๋ฉด ์ค๋ฆ์ฐจ์ ์ ๋ ฌ์ด ์์ฑ๋๋ค.
๐ฟ์คํ
'๐คฏ ๋ฐ์ดํฐ๊ตฌ์กฐ์ ์๊ณ ๋ฆฌ์ฆ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[์๊ณ ๋ฆฌ์ฆ] ์ด์งํ์ ์ ๋ฆฌ (0) | 2023.05.16 |
---|---|
[์๊ณ ๋ฆฌ์ฆ] ์ฌ๊ทํจ์๋ฅผ ์ด์ฉํ DFS(2) (0) | 2022.12.01 |
[์๊ณ ๋ฆฌ์ฆ] ์ธ์ ํ๋ ฌ์ ํตํ ์ธ์ ๋ฆฌ์คํธ ๊ตฌํ, DFS(1) (0) | 2022.11.26 |
[์๊ณ ๋ฆฌ์ฆ] ๋ฒ๋ธ ์ ๋ ฌ ๊ตฌํ (c์ธ์ด) (0) | 2022.11.10 |
[์๊ณ ๋ฆฌ์ฆ] ์ ํ ์ ๋ ฌ ๊ตฌํ (c์ธ์ด) (0) | 2022.11.10 |