-
[Algorithm] ์ฝ์ ์ ๋ ฌ(Insertion Sort)๐ปProgramming/Algorithm 2024. 3. 28. 18:22
์ฝ์ ์ ๋ ฌ์ด๋?
ํ์ฌ ๋น๊ตํ๊ณ ์ ํ๋ target๊ณผ ๊ทธ ์ด์ ์ ์์๋ค๊ณผ ๋น๊ตํ๋ฉฐ ์๋ฆฌ๋ฅผ ๊ตํ(swap)ํ๋ ์ ๋ ฌ ๋ฐฉ๋ฒ.
์ ํ์ ๋ ฌ, ๋ฒ๋ธ์ ๋ ฌ๊ณผ๋ ๋ค๋ฅด๊ฒ ์์ ์ ๋ ฌ.
์ฝ์ ์ ๋ ฌ์ ๊ณผ์ (์ค๋ฆ์ฐจ์ ๊ธฐ์ค)
1. ์ธ๋ฑ์ค 1๋ถํฐ ์์ํ๋ค. ํ์ฌ ์ธ๋ฑ์ค๋ฅผ ํ๊ฒ ์ธ๋ฑ์ค๋ก ํ๊ณ ๋ณ์์ ๋ฃ๋๋ค. ์ด ๋ณ์๋ณด๋ค ์ด์ ์ธ๋ฑ์ค๊ฐ ์์ผ๋ฉด ์ด์ ์ธ๋ฑ์ค์ ๊ฐ์ ๊ทธ ๋ค์ ์ธ๋ฑ์ค์ ๋ฃ์ด์ค๋ค.
2. ๋ง์ฝ์ ์ธ๋ฑ์ค 2๊ฐ ํ๊ฒ์ด๊ณ , ํ๊ฒ์ ๊ฐ์ด ์ธ๋ฑ์ค 1๋ณด๋ค ์๋ค๋ฉด ๊ทธ ๋ค์ ์ธ๋ฑ์ค์ ๋ฃ๋๋ค. ๋ ์ธ๋ฑ์ค 0์ด ํ๊ฒ๋ณด๋ค ์์ผ๋ฉด ๋ ๊ทธ ๋ค์ ์ธ๋ฑ์ค์ ๋ฃ๋๋ค. ๊ทธ๋ฆฌ๊ณ ํ๊ฒ ์ธ๋ฑ์ค์ ๊ฐ์ ์ธ๋ฑ์ค 0์ ๋ฃ์ด์ค๋ค.
3. ์ด๋ฅผ ๊ณ์ ๋ฐ๋ณตํ๋ค.
๊ตฌํ ์ฝ๋
import java.util.Scanner; public class Main { private int[] solution(int n, int[] list) { int i, j; for (i = 1; i < n; i++) { int key = list[i]; for (j = i - 1; j >= 0; j--) { if (key < list[j]) list[j + 1] = list[j]; else break; } list[j + 1] = key; } return list; } public static void main(String[] args) { Scanner scanner = new Scanner(System.in); Main T = new Main(); int n = scanner.nextInt(); int[] list = new int[n]; for (int i = 0; i < n; i++) list[i] = scanner.nextInt(); for (int i : T.solution(n, list)) System.out.print(i + " "); } }
์ฝ์ ์ ๋ ฌ ์๊ณ ๋ฆฌ์ฆ์ ์ฅ์
- ์์ ํ ์ ๋ ฌ ๋ฐฉ๋ฒ
- ๋ ์ฝ๋ ์๊ฐ ์ ์ ๊ฒฝ์ฐ ์๊ณ ๋ฆฌ์ฆ์ด ๊ฐ๋จํ๋ฏ๋ก ๋ค๋ฅธ ๋ณต์กํ ์ ๋ ฌ ์๊ณ ๋ฆฌ์ฆ๋ณด๋ค ์ ๋ฆฌํ ์ ์๋ค.
- ์ด๋ฏธ ์ ๋ ฌ๋์ด์๋ ๋ ์ฝ๋์ผ ๊ฒฝ์ฐ ํจ์จ์ ์ผ ์ ์๋ค.
์ฝ์ ์ ๋ ฌ ์๊ณ ๋ฆฌ์ฆ์ ๋จ์
- ๋ง์ ๋ ์ฝ๋๋ค์ ์ด๋์ ํฌํจํ๋ค.
- ๋ ์ฝ๋ ์๊ฐ ๋ง๊ณ ํฌ๊ธฐ๊ฐ ํด ๊ฒฝ์ฐ์ ์ ํฉํ์ง ์๋ค.
์๊ฐ ๋ณต์ก๋
์ด๋ฏธ ๋ชจ๋ ๋ ์ฝ๋๊ฐ ์ ๋ ฌ๋์ด ์๋ ๊ฒฝ์ฐ
๋น๊ต ํ์: ์ด๋์ด ์์ด 1๋ฒ์ ๋น๊ต๋ง ์ด๋ฃจ์ด์ง๋ค.
์ธ๋ถ ๋ฃจํ: (n-1)๋ฒ -> O(n)
๋ ์ฝ๋๊ฐ ์ญ์์ผ๋ก ์ ๋ ฌ๋์ด ์๋ ๊ฒฝ์ฐ
๋น๊ต ํ์: ์ธ๋ถ ๋ฃจํ ์์ ๊ฐ ๋ฐ๋ณต๋ง๋ค i๋ฒ์ ๋น๊ต๋ฅผ ์ํ
์ธ๋ถ ๋ฃจํ: (n-1)+(n-2)+...+2+1 = n(n-1)/2 = O(n^2)
References
https://gmlwjd9405.github.io/2018/05/06/algorithm-insertion-sort.html
[์๊ณ ๋ฆฌ์ฆ] ์ฝ์ ์ ๋ ฌ(insertion sort)์ด๋ - Heee's Development Blog
Step by step goes a long way.
gmlwjd9405.github.io
'๐ปProgramming > Algorithm' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Algorithm] ์ฌ๊ทํจ์๋ฅผ ์ด์ฉํ ํผ๋ณด๋์น ์์ด ๊ตฌํ (0) 2024.04.11 [Algorithm] ์ด์งํ์(Binary Search) (0) 2024.04.09 [Algorithm] ๋ฒ๋ธ ์ ๋ ฌ(Bubble Sort) (0) 2024.03.27 [Algorithm] ์ ํ์ ๋ ฌ(Selection Sort) (0) 2024.03.26 [Algorithm] ์ฐ์ ๋ถ๋ถ์์ด (0) 2024.03.05