์ฝ์ ์ ๋ ฌ (Injection Sort)
์ฝ์ ์ ๋ ฌ์, ํ ๋ฐฐ์ด์ '์ ๋ฐฐ์ด'๊ณผ '๋ท ๋ฐฐ์ด'๋ก ์ชผ๊ฐ์ด '๋ท ๋ฐฐ์ด'์ ์์๋ฅผ ์ ๋ ฌ๋ '์ ๋ฐฐ์ด'์ ๋ค์ด๊ฐ ์ฌ๋ฐ๋ฅธ ์์น๋ฅผ ์ฐพ์ ์ฝ์ ํ๋ ์ ๋ ฌ์ด๋ค. ์ ์ดํด๊ฐ ๋์ง ์์ ์ ์์ผ๋ฏ๋ก, ํ๋์ฉ ์ค๋ช ์ ํด๋ณด๊ฒ ๋ค.
๋ค์๊ณผ ๊ฐ์ด ์ฃผ์ด์ง ๋ฐฐ์ด์ด ์๋ค๊ณ ํ์.
array = [3, 4, 5, 2, 1, 6, 7]
3 | 4 | 5 | 2 | 1 | 6 | 7 |
์ ๋ ฌ ์๊ณ ๋ฆฌ์ฆ ์ , ์ฃผ์ด์ง ๋ฐฐ์ด์ ๋ค์๊ณผ ๊ฐ์ด ๋นจ๊ฐ ๋ถ๋ถ๊ณผ ํ๋ ๋ถ๋ถ์ผ๋ก ๋ณผ ์ ์๋ค.
๋นจ๊ฐ ๋ถ๋ถ์ ์ด๋ฏธ ์ ๋ ฌ์ด ๋ '์ ๋ฐฐ์ด',
ํ๋ ๋ถ๋ถ์ '์ ๋ฐฐ์ด'์ ์ฝ์ ์ด ๋๊ธฐ ์ํด ๋๊ธฐํ๊ณ ์๋ '๋ท ๋ฐฐ์ด'๋ก ์ดํดํ๋ฉด ์ข๋ค.
์ ๋ ฌ ์๊ณ ๋ฆฌ์ฆ์ '๋ท ๋ฐฐ์ด'์ ๋ค์ด์๋ ์ฒซ ๋ฒ์งธ ์์๋ถํฐ ์์ํ๋ฏ๋ก, ์ ์ฒด ๋ฐฐ์ด๋ก ์๊ฐํ๋ฉด ๋ ๋ฒ์งธ ์์๋ถํฐ ์ ๋ ฌ ๋์์ด ๋๋ค.
๋ ๋ฒ์งธ ์์ '4'๋ '์ ๋ฐฐ์ด'์ ์ ์ผ ๋ง์ง๋ง ์์์ธ '3'๋ณด๋ค ํฌ๋ฏ๋ก, ์ด๋ํ์ง ์๊ณ ์๋ฆฌ๊ฐ ๊ฒฐ์ ๋๋ค.
3 | 4 | 5 | 2 | 1 | 6 | 7 |
์ธ ๋ฒ์งธ ์์ '5'๋ '์ ๋ฐฐ์ด'์ ์ ์ผ ๋ง์ง๋ง ์์์ธ '4'๋ณด๋ค ํฌ๋ฏ๋ก, ์ด๋ํ์ง ์๊ณ ์๋ฆฌ๊ฐ ๊ฒฐ์ ๋๋ค.
3 | 4 | 5 | 2 | 1 | 6 | 7 |
๋ค ๋ฒ์งธ ์์๋ฅผ ๋ณด์. '2'๋ '์ ๋ฐฐ์ด'์ ์ ์ผ ๋ง์ง๋ง ์์์ธ '5'๋ณด๋ค ์์ผ๋ฏ๋ก ์์ผ๋ก ํ ์นธ ์ด๋ํ๋ค.
'2'๋ ๊ทธ ์์ธ '4'๋ณด๋ค ์์ผ๋ฏ๋ก ์์ผ๋ก ํ ์นธ ๋ ์ด๋ํ๊ณ ,
๊ทธ ์์ธ '3'๋ณด๋ค ์์ผ๋ฏ๋ก ์์ผ๋ก ํ ์นธ ๋ ์ด๋ํ๋ค.
๋ฐ๋ผ์ ์์ ์๋ฌด๊ฒ๋ ์๊ฑฐ๋, ์์ ์์๋ณด๋ค '2'๊ฐ ๋ ํฌ๋ค๋ฉด ์ด๋์ ๋ฉ์ถ๊ณ ์๋ฆฌ๋ฅผ ๊ฒฐ์ ํ๋ค.
3 | 4 | 2 | 5 | 1 | 6 | 7 |
3 | 2 | 4 | 5 | 1 | 6 | 7 |
2 | 3 | 4 | 5 | 1 | 6 | 7 |
2 | 3 | 4 | 5 | 1 | 6 | 7 |
์ด์ ๊ฐ์ ๊ณผ์ ์ ๋ฐ๋ณตํ๋ฉด, ์ฝ์ ์ ๋ ฌ์ด ์๋ฃ๋๋ค. ์ฝ๋๋ฅผ ์ดํด๋ณด์.
์ฝ์ ์ ๋ ฌ ํ์ด์ฌ ์ฝ๋
์ฝ์ ์ ๋ ฌ ์๋ฐ ์ฝ๋
์ฝ์ ์ ๋ ฌ ์ฅ๋จ์
- ์ฝ์ ์ ๋ ฌ์ ์ฅ์
Best case์ ๊ฒฝ์ฐ, O(N)์ด๋ผ๋ ์ข์ ์๊ฐ๋ณต์ก๋๋ฅผ ๊ฐ์ง๊ณ ์๋ค.
๋น๊ตํ์๋ฅผ ๋ฒ๋ธ์ ๋ ฌ์ ๋นํด ํ์ฐํ ์ค์๋ค.
์ด๋ฏธ ์ ๋ ฌ๋ ๋ฐฐ์ด, ํฌ๊ธฐ๊ฐ ์์ ๋ฐฐ์ด์ ์ ์ฉํ๋ค.
- ์ฝ์ ์ ๋ ฌ์ ๋จ์
Worst case์ ๊ฒฝ์ฐ O(n^2)์ ์๊ฐ ๋ณต์ก๋๋ฅผ ๊ฐ์ง๋ค.
๋ฐ์ดํฐ์ ์ํ์ ํฌ๊ธฐ์ ๋ฐ๋ผ ์ฑ๋ฅ์ ํธ์ฐจ๊ฐ ์ฌํ๋ค.
'๐งช ์ปดํจํฐ๊ณผํ : CS' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[์๋ฃ๊ตฌ์กฐ] Array์ LinkedList์ ์ฐจ์ด (์ธํฐ๋ทฐ ๋๋น) (0) | 2022.10.23 |
---|---|
[๊ฐ๋ฐ๊ณตํต] Call by value์ Call by reference (Java, Python, C/C++) (0) | 2022.10.11 |
[Algorithm] ํ ์ ๋ ฌ (Heap Sort) (0) | 2022.09.03 |
[Algorithm] ์ ํ ์ ๋ ฌ (Selection Sort) (0) | 2022.09.03 |
[Algorithm] ๋ฒ๋ธ ์ ๋ ฌ (Bubble Sort) (0) | 2022.09.03 |