โ 1. ์ ๋ ฌ ์๊ณ ๋ฆฌ์ฆ: ํต ์ ๋ ฌ, ํฉ๋ณ ์ ๋ ฌ
- ํต์ ๋ ฌ, ํฉ๋ณ ์ ๋ ฌ ๋ ๊ฐ์ง์ ๊ณตํต ํน์ง์ ๋ถํ ์ ๋ณต ๋ฐฉ๋ฒ์ด ์ ์ฉ๋๋ ์๊ณ ๋ฆฌ์ฆ์ด๋ค.
- ๋ถํ ์ ๋ณต ๋ฐฉ๋ฒ์ ๊ทธ๋ฅ ๋จ์ํ ๋ฐ์ดํฐ ์งํฉ์ ์ชผ๊ฐ์ ๋ถํ ํด์ ์ ๋ ฌ ํ ๋ ์ฐ์ด๋ ๊ฐ๋ ์ผ๋ก ๋ณด๋ฉด ๋ ๋ฏ
(1) ํต ์ ๋ ฌ
[ ํผ๋ฒ - pivot, ๋ถํ ์์ ]
- ๋ ๊ฐ์ ๋ถ๋ถ๋ฐฐ์ด๋ก ๋ถํ ํ ๋ ๊ธฐ์ค์ด ๋๋ ํน์ ํ ๋ฐ์ดํฐ๋ฅผ ์๋ฏธํจ.
- ๋ณดํต ์ฃผ์ด์ง ๋ฐฐ์ด์ ์ฒซ ๋ฒ์งธ ์์๋ฅผ ํผ๋ฒ์ผ๋ก ์ ํ๊ธด ํจ.
- ํน์ ๋ฐ์ดํฐ(ํผ๋ฒ)๋ฅผ ๊ธฐ์ค์ผ๋ก ์ ๋ ฅ ๋ฐฐ์ด์ ๋ ๊ฐ์ ๋ถ๋ถ๋ฐฐ์ด๋ก ๋ถํ ํ๊ณ , ๊ฐ ๋ถ๋ถ ๋ฐฐ์ด์ ๋ํด์ ๋ ๋ฆฝ์ ์ผ๋ก ํต ์ ๋ ฌ์ ์ํ์ ์ผ๋ก ์ ์ฉํ๋ค. ๋ผ๋ ๊ฐ๋ ์ ๊ฐ์ง๊ณ ์๋ ์ ๋ ฌ์.
- ์ฝ๊ฒ๋งํด, ์ ๋ ฅ ๋ฐฐ์ด์์ ์ ๋ ฌ ๊ธฐ์ค์ผ๋ก ์ผ๊ณ ์ถ์ ์์๋ฅผ ํผ๋ฒ์ผ๋ก ๋ณด๊ณ ํด๋น ํผ๋ฒ ๋ฐ์ดํฐ๋ฅผ ๊ธฐ์ค์ผ๋ก ์ ๋ ฅ ๋ฐฐ์ด์ ๋ ๊ฐ์ ๋ถ๋ถ ๋ฐฐ์ด๋ก ๋๋ ์ ์๋ค. ์ฆ, ์ผ์ชฝ ๋ถ๋ถ ๋ฐฐ์ด(์ผ์ชฝ ๊ทธ๋ฃน), ์ค๋ฅธ์ชฝ ๋ถ๋ถ ๋ฐฐ์ด(์ค๋ฅธ์ชฝ ๊ทธ๋ฃน)๋ก ๋๋๋ค๋ ์๋ฏธ์ด๋ค. ๋ํ, ์ผ์ชฝ ๊ทธ๋ฃน ์ ๋ ฌ๊ณผ ์ค๋ฅธ์ชฝ ๊ทธ๋ฃน์ ์ ๋ ฌ์ ๋ฐ๋ก ๋ ๋ฆฝ์ ์ผ๋ก ์ฒ๋ฆฌ๊ฐ ๋๋ฉฐ, ๋ถ๋ถ ๋ฐฐ์ด์ ๋ํด์๋ ๋๊ฐ์ด ์ ๋ ฌ ๊ธฐ์ค์ด ๋๋ ํผ๋ฒ์ ์ ํํ์ฌ ํด๋น ํผ๋ฒ์ ๊ธฐ์ค์ผ๋ก ๋ค์ ๋ถํ ์ด ๋๊ณ ์ ๋ ฌ์ด ๋๋ ๋ฐฉ์์ด๋ค. ์ด๋ฌํ ๊ณผ์ ์ ๋ฐ๋ณตํ๋ ๊ฒ์ด ํต ์ ๋ ฌ์ด๋ค.
- ์ฆ, ์ด๋ฌํ ํผ๋ฒ์ ๊ธฐ์ค์ผ๋ก ์ฐพ๋ ๊ณผ์ ์ด "ํผ๋ฒ์ด ์ ์๋ฆฌ๋ฅผ ์ก๋๋ก ํ์ฌ ์ ๋ ฌํ๋ ๋ฐฉ์" ์ผ๋ก๋ ๋ณผ ์ ์์.
- ํ๊ท ์ ์ผ๋ก ๊ฐ์ฅ ์ข์ ์ฑ๋ฅ์ ๋น๊ต ๊ธฐ๋ฐ ์๊ณ ๋ฆฌ์ฆ์ด๋ฉฐ, O(nlogn) ์ด๋ค.
(2) ํต ์ ๋ ฌ - ๋ถํ ๊ณผ์ 1
- ๋ฐฐ์ด์ ํผ๋ฒ ๊ธฐ์ค์ผ๋ก ๋ถ๋ถ ๋ฐฐ์ด๋ก ๋ถํ ํ๋ ๊ณผ์ ์ ๋ถํ ๊ณผ์ ์ด๋ผ ๋ณผ ์ ์๋ค.
- (1) ๋ฐฐ์ด์ ์ ์ผ ์ฒซ ๋ฒ์งธ ์์๋ฅผ ํผ๋ฒ์ผ๋ก ๊ฐ์ ์ ํ๋ฉฐ, ํผ๋ฒ์ index = 0, L index = 1 , R index = 7 ๋ก ์ ์๋ฅผ ํ๋ค.
- (2) ํผ๋ฒ ๋ฐ์ดํฐ์ธ 54๋ฅผ ๊ธฐ์ค์ผ๋ก L ์ ์ธ๋ฑ์ค๋ฅผ ์ฌ๋ฆฌ๋ฉด์ ํผ๋ฒ๋ณด๋ค ํฐ ๊ฐ์ ์ฐพ๊ฒ ๋๊ณ , R ์ ๋ฐ๋๋ก ์ธ๋ฑ์ค๋ฅผ ๋ด๋ฆฌ๋ฉด์ ํผ๋ฒ๋ณด๋ค ์์ ๊ฐ์ ์์น๋ฅผ ์ฐพ๊ฒ ๋๋ค. ์ฆ, 34 -> 41 -> 89 ( ํผ๋ฒ๋ณด๋ค ํฐ ๊ฐ ) ์์ ๋ฉ์ถ๊ฒ ๋๋ฉฐ L ์ 89์ ์์นํ๊ฒ ๋๊ณ , R ์ ํผ๋ฒ์ ๋ฐ์ดํฐ์ธ 54 ๋ณด๋ค ์์ ๊ฐ์ธ 23 ์๋ ์์นํ๋ ๊ณณ์ ์๊ฒ ๋๋ค.
- (3) ํ์ฌ L ์ ์์น 89 ์ R ์ ์์น 23 ์ ์์น๋ฅผ ์๋ก ๋ณ๊ฒฝ์ ํ๊ฒ ๋๋ฉฐ, L ๊ณผ R ์ด ๋ ๋ค์ ์ด๋ํ๋ฉด์ ํผ๋ฒ์ ๊ธฐ์ค์ผ๋ก ํฐ ์์ ์์ ์๋ฅผ ์ฐพ๊ฒ ๋๋ฉด ๊ทธ ์๋ฆฌ์ ๋ฉ์ถ๊ณ ๋ ๋ค์ ์๋ก ๊ตํ์ ๋ฐ๋ณตํ๊ฒ ๋๋ค.
- (4) L ๊ณผ R ์ ์ธ๋ฑ์ค๊ฐ ๊ต์ฐจ๊ฐ ๋๋ ์๊ฐ ์ฆ, L(index) > R(index) ๊ฐ ๋๋ ๊ฒฝ์ฐ์๋ R ์ ๊ฐ๊ณผ ํผ๋ฒ ๊ฐ์ ์๋ก ์์น๋ฅผ ๊ตํํ๊ฒ ๋๊ณ ์ ๋ ฌ์ด ์ข ๋ฃ๊ฐ ๋๊ฒ ๋๋ค.
- (5) ๊ฒฐ๊ณผ์ ์ผ๋ก ํผ๋ฒ์ ๊ธฐ์ค์ผ๋ก ์ผ์ชฝ ๋ถ๋ถ๋ฐฐ์ด์ ํผ๋ฒ๋ณด๋ค ์์ ๊ฐ ์ค๋ฅธ์ชฝ์ ํผ๋ฒ๋ณด๋ค ํฐ ๊ฐ์ด ๋๊ฒ๋๋ค.
(3) ํต ์ ๋ ฌ - ๋ถํ ๊ณผ์ 2
- ์์ ๋ง์ฐฌ๊ฐ์ง๋ก L ๊ณผ R ์ด ์ด๋ํ๋ฉด์ ํผ๋ฒ์ ๊ธฐ์ค์ผ๋ก ํฐ ๊ฐ๊ณผ ์์ ๊ฐ์ ์ฐพ์ผ๋ฉฐ ์๋ก ์์น๋ฅผ ๊ตํํ๊ฒ ๋๋ค.
- ๋ง์ฐฌ๊ฐ์ง๋ก L ์ด R ๋ณด๋ค ํฐ ์ํ ์ฆ, L > R ์ํ์ด๋ฏ๋ก, R ์ ๊ฐ์ด ํผ๋ฒ๊ณผ ์์น๋ฅผ ๋ฐ๊พธ๊ฒ ๋๋ฉด์ ๋ถํ ์ด ๋๊ฒ ๋๋ค.
(4) ํต ์ ๋ ฌ - ์ ์ฒด์ ์ธ ์ํ ๊ณผ์
- ์์ ๋ถํ ๊ณผ์ ์ ํตํด ํผ๋ฒ์ด ์ ์๋ฆฌ๋ฅผ ์ฐพ์๊ฐ ์ ์์ผ๋ฉฐ, ์ด๋ฌํ ๋ถํ ๊ณผ์ ์ ํตํด ์ป์ด๋ธ ์ผ์ชฝ๊ณผ ์ค๋ฅธ์ชฝ ๋ถ๋ถ๋ฐฐ์ด์์ ๋ ๋ค์ ๋ถํ ๊ณผ์ ์ ํตํด ํผ๋ฒ์ด ์ ์๋ฆฌ๋ฅผ ์ฐพ์๊ฐ๊ฒ ๋๋๋ฐ ์ด๋ฌํ ๊ณผ์ ์ ๋ฐ๋ณตํ๋ฉด ์ต์ข ์ ์ผ๋ก ์ ๋ ฌ ๋ ๋ฐฐ์ด์ ์ป์ ์ ์๋ค.
- (1) ๊ธฐ์ค์ด ๋๋ ํผ๋ฒ 54 ๋ฅผ ๋ถํ ๊ณผ์ ์ ํตํด ์ ์๋ฆฌ๋ฅผ ์ฐพ์๊ฐ๊ฒ ๋๋ฉฐ, ์ค๋ฅธ์ชฝ๊ณผ ์ผ์ชฝ ๋ถ๋ถ๋ฐฐ์ด์ด ์๊ธฐ๊ฒ ๋จ.
- (2) ํผ๋ฒ 16์ ๊ธฐ์ค์ผ๋ก L ์ 34 ์์ ๋ฉ์ถ๊ฒ ๋๋ค R ์ 16 ๋ณด๋ค ์์ ์๊ฐ ์์ผ๋ฏ๋ก, ์๋ ์์น์์ ๊ณ ์ ์ด ๋๊ฒ ๋๋ค.
- (3) ํผ๋ฒ 34 ๊ธฐ์ค์ผ๋ก L ์ 41 ์ ๋ฉ์ถ๊ณ R ์ 23 ์ ๋ฉ์ถ๊ฒ ๋๋ค ์๋ก ๊ตํ์ ํ๊ฒ ๋์ด 34, 23, 41, 52 ํํ๊ฐ ๋ ๊ฒ์ด๋ค. ์ดํ, L > R ํํ๊ฐ ๋๋ฏ๋ก 23 ๊ณผ 34๋ ๊ตํ์ด ๋๋ฉฐ 23, 34, 41, 52 ํํ๊ฐ ๋๊ฒ ๋๋ค.
- (4) 23์ ๋ถํ ํ ๋ฐ์ดํฐ๊ฐ ์์ผ๋ฏ๋ก 23์ด ์ ์๋ฆฌ๋ฅผ ์ฐพ๊ฒ ๋จ.
- (5) 41 ๋ํ L ๋ง ์กด์ฌํ๊ธฐ ๋๋ฌธ์ 41์ด ์์น๊ฐ ๊ณ ์ ์ด ๋จ
- (6) 52 ๋ํ L ๋ง ์กด์ฌํ๊ธฐ ๋๋ฌธ์ 52์ด ์์น๊ฐ ๊ณ ์ ์ด ๋จ.
- (7) ~ (8) 67, 89 ๋ํ ๋ง์ฐฌ๊ฐ์ง๋ก ๊ณ ์ ์ด ๋จ.
(5) ํต ์ ๋ ฌ - ํต ์ ๋ ฌ์ ํน์ง
[ ๋ถํ ์ ๋ณต ๋ฐฉ๋ฒ์ ์ ์ฉํ ์๊ณ ๋ฆฌ์ฆ ]
- ๋ถํ : ์ ๋ ฌํ n ๊ฐ์ ๋ฐ์ดํฐ๋ฅผ ํผ๋ฒ์ ์ค์ฌ์ผ๋ก ๋ ๊ฐ์ ๋ถ๋ถ๋ฐฐ์ด๋ก ๋ถํ
- ์ ๋ณต: ๋ ๋ถ๋ถ๋ฐฐ์ด ๊ฐ๊ฐ์ ๋ํด ํต ์ ๋ ฌ์ ์ํ์ ์ผ๋ก ์ ์ฉํ์ฌ ๋ ๋ถ๋ถ๋ฐฐ์ด์ ์ ๋ ฌ
- ๊ฒฐํฉ: ํ์ ์์
[ ์ฑ๋ฅ ]
- ๋ถํ ๊ณผ์ ์ ์ํ ์๊ฐ - O(n)
- ํ๊ท ์ํ ์๊ฐ - O(nlogn) : ํผ๋ฒ ์ ํ์ ์์์ฑ๋ง ๋ณด์ฅ๋๋ฉด ํ๊ท ์ํ ์๊ฐ์ ๋ณด์ผ ๊ฐ๋ฅ์ฑ์ด ๋์
- ์ต์ ์ํ ์๊ฐ - O(nlogn)
- ์ต์ ์ํ ์๊ฐ - O(n^2): ํด๋น ์ต์ ์ ๊ฒฝ์ฐ๋ ์ ๋ ฅ ๋ฐ์ดํฐ๊ฐ ์ด๋ฏธ ์ ๋ ฌ ๋ ๊ฒฝ์ฐ๋ก ํผ๋ฒ์ด ์ฒซ ๋ฒ์งธ ์์๋ฅผ ์ง์ ํ ๊ฒฝ์ฐ ํญ์ ์ต๋๊ฐ์ด๋ ์ต์๊ฐ์ด ๋๋ ๊ฒฝ์ฐ ์ด๋ฏ๋ก, ์ต์ ์ ์ํ ์๊ฐ์ด ๋ ์ ์์.
(6) ํฉ๋ณ ์ ๋ ฌ
- ๋์ผํ ํฌ๊ธฐ์ ๋ ๊ฐ์ ๋ถ๋ถ๋ฐฐ์ด๋ก ๋ถํ ํ๊ณ , ๊ฐ ๋ถ๋ถ๋ฐฐ์ด์ ์ํ์ ์ผ๋ก ์ ๋ ฌํ ํ, ์ ๋ ฌ๋ ๋ ๋ถ๋ถ๋ฐฐ์ด์ ํฉ๋ณํด์ ํ๋์ ์ ๋ ฌ๋ ๋ฐฐ์ด์ ๋ง๋๋ ์ ๋ ฌ ๋ฐฉ์์ด๋ค.
- ์ฝ๊ฒ๋งํด, ๋์ผํ ํฌ๊ธฐ๋ก ๋ถ๋ถ๋ฐฐ์ด์ ๋๊ฐ๋ก ๋ถํ ํ ๋ค ๊ฐ ๋ถ๋ถ๋ฐฐ์ด์ ์ ๋ ฌํ๊ณ ์ดํ ๋ ๋ถ๋ถ ๋ฐฐ์ด์ ํฉ๋ณํ๋ฉด์ ์ ๋ ฌ
- ์ฆ, ๋์ผํ ํฌ๊ธฐ๋ก ์๋ฅด๋ฏ๋ก ๊ฐ์ด๋ฐ๋ฅผ ๊ธฐ์ค์ผ๋ก ์๋ฅด๋ ๋๋์ด ๋ ์ ์์.
(6) ํฉ๋ณ ์ ๋ ฌ - ์ ์ฒด์ ์ธ ์ํ ๊ณผ์
- (1) ๋ฐ์ฉ ์ชผ๊ฐ๋ฉด์ ๋ ์ด์ ์ชผ๊ฐ์ง์ง ์์ ๋ ๊น์ง ๋ฐ๋ณต ๋ถํ ์ ํ๊ฒ ๋๋ค.
- (2) ์ดํ ํฉ๋ณ ๊ณผ์ ์์ ๋ ์๋ฅผ ๋น๊ตํ๋ ๋ฐ๋ณต ํฉ๋ณ์ ํตํด ์ ๋ ฌ์ ํ๊ฒ ๋๋ค.
- ์ฆ, ํต์ฌ์ ๋ถํ ์ด ๋์ด ์ชผ๊ฐ์ง ๋ ๋ถ๋ถ๋ฐฐ์ด์ ํ๋์ ์ ๋ ฌ๋ ๋ฐฐ์ด๋ก ์ฆ, ํฉ๋ณํ๋ ๊ณผ์ ์ด ๋ ์ ์์.
(7) ํฉ๋ณ ์ ๋ ฌ - ํฉ๋ณ ๊ณผ์
- ํฉ๋ณ ๊ณผ์ ์ ์ ๋ ฌ๋ ๋ ๋ถ๋ถ๋ฐฐ์ด์ ํ๋์ ์ ๋ ฌ๋ ๋ฐฐ์ด๋ก ๋ง๋๋ ๊ณผ์ ์ด๋ค.
# ๋ ๋ถ๋ถ๋ฐฐ์ด
34 41 54 89 | 16 23 52 67
# ํฉ๋ณ ๊ณผ์
34 , 16 ๋น๊ต => 16
34 , 23 ๋น๊ต => 23
34 , 52 ๋น๊ต => 34
52 , 41 ๋น๊ต => 41
52 , 54 ๋น๊ต => 52
54 , 67 ๋น๊ต => 54
67 , 89 ๋น๊ต => 67
๋จ๋ ๊ฐ => 89
# ๊ฒฐ๊ณผ
C[n] = 16, 23, 34, 41, 52, 54, 67, 89
- ๋ ๋ถ๋ถ๋ฐฐ์ด์ ์์์ ์ด๋ฏธ ์ ๋ ฌ์ด ๋ ์ํ ์ด๋ฏ๋ก, ๊ฐ ๋ถ๋ถ๋ฐฐ์ด์ ์ ์ธ๋ฑ์ค๋ถํฐ ์๋ก ๋น๊ต๋ฅผ ํ๋ฉด์
- 16๊ณผ 34๋ฅผ ๋น๊ต ํ ์์ ๊ฐ์ C[n] ๋ฐฐ์ด์ ๋ด๊ณ ์ ๋ถํฐ ๋จ๋ ์ ๋ฐ๋ณต ๋น๊ต ํ ๋ฐฐ์ด์ ๋ด๋ ์ด๋ฌํ ๊ณผ์ ์ ํตํด ์ ๋ ฌ์ด ๊ฐ๋ฅํจ.
(8) ํฉ๋ณ ์ ๋ ฌ - ํน์ง
- ํฉ๋ณ ์ ๋ ฌ๋ ํต ์ ๋ ฌ๊ณผ ๋์ผํ๊ฒ ๋ถํ ์ ๋ณต ๋ฐฉ๋ฒ์ ์ ์ฉํ ์๊ณ ๋ฆฌ์ฆ์ด๋ค.
- ๋ถํ : ์ ๋ ฌํ n ๊ฐ์ ๋ฐ์ดํฐ๋ฅผ n/2 ๊ฐ์ ๋ฐ์ดํฐ๋ฅผ ๊ฐ๋ ๋ ๋ถ๋ถ๋ฐฐ์ด๋ก ๋ถํ
- ์ ๋ณต: ๋ ๋ถ๋ถ๋ฐฐ์ด์ ๋ํด ํฉ๋ณ ์ ๋ ฌ์ ๊ฐ๊ฐ ์ํ์ ์ผ๋ก ์ ์ฉํ์ฌ ์ ๋ ฌ
- ํฉ๋ณ: ์ ๋ ฌ๋ ๋ ๋ถ๋ถ๋ฐฐ์ด์ ํฉ๋ณํ์ฌ ํ๋์ ์ ๋ ฌ๋ ๋ฐฐ์ด์ ๋ง๋ฆ
[ ์ฑ๋ฅ ]
- ์ต์ , ์ต์ , ํ๊ท ์ํ ์๊ฐ ๋ชจ๋ O(nlogn) ์ ํน์ง์ ๋๊ณ ์์.
- ๊ธฐ์กด์ ์ ํ ์ ๋ ฌ, ๋ฒ๋ธ ์ ๋ ฌ ๋ฑ์ O(n^2) ์ด์์ง๋ง, ํฉ๋ณ์ด๋ ํต ์ ๋ ฌ์ ๋ชจ๋ O(nlogn) ์ผ๋ก ์ฑ๋ฅ์ด ๋ ๋ฐ์ด๋จ
โ 2. ์์ฐจํ์, ์ด์งํ์
(1) ํ์ ์ด๋?
- ํ์์ด๋ ์ฃผ์ด์ง ๋ฐ์ดํฐ ์งํฉ์์ ์ํ๋ ๊ฐ์ ๊ฐ์ง ๋ฐ์ดํฐ๋ฅผ ์ฐพ๋ ์์ ์ ์๋ฏธํ๋ค.
- ํ์์๋ ๋ํ์ ์ผ๋ก ์์ฐจ ํ์, ์ด์ง ํ์, ์ด์ง ํ์ ํธ๋ฆฌ๊ฐ ์กด์ฌํ๋ค.
- ๊ฐ๊ฐ ์ฑ๋ฅ์ ์์ฐจ ํ์ O(n) / ์ด์ง ํ์ O(logn) / ์ด์ง ํ์ ํธ๋ฆฌ ํ๊ท O(logn) ์ต์ O(n) ํน์ง์ ๊ฐ์ง๊ณ ์์.
(2) ์์ฐจ ํ์
- ๋ฆฌ์คํธ ํํ๋ก ์ฃผ์ด์ง ๋ฐ์ดํฐ๋ฅผ ์ฒ์๋ถํฐ ํ๋์ฉ ์ฐจ๋ก๋๋ก ๋น๊ตํ์ฌ ์ํ๋ ๋ฐ์ดํฐ๋ฅผ ์ฐพ๋ ๋ฐฉ๋ฒ์ด๋ค.
- ์์ ์ด๋ฏธ์ง์ ๊ฐ์ด ๋ฐฐ์ด์์ 30์ ๊ฐ์ ์ฐพ๋ ๊ณผ์ ์์ ์์์๋ถํฐ ํ๋์ฉ ํ์ํ๋ฉด์ ์ฐพ์๊ฐ๋ ๋ฐฉ๋ฒ์ด ์์ฐจ ํ์์ด๋ค.
(3) ์์ฐจ ํ์ - ํน์ง
[ ํ์ ์ฑ๋ฅ ]
- ์คํจํ๋ ๊ฒฝ์ฐ์ ๋น๊ต ํ์๋ n ๋ฒ, ์ฑ๊ณตํ๋ ๊ฒฝ์ฐ์ ๋น๊ต ํ์๋ 1 ~ n ๋ฒ์ด ๋ ์ ์๋ค.
- ์ฆ, ์ ๋ ฅ ํฌ๊ธฐ n ์ ๋น๋กํ๋ ๋งํผ์ ์ฑ๋ฅ ํฌ๊ธฐ๋ฅผ ๊ฐ์ง๊ฒ ๋๋ฉฐ O(n) ์ด ๋ ์ ์์.
- ๊ฒฐ๋ก ์ ์์ฐจ ํ์์ ๋ฐ์ดํฐ๊ฐ ๋ง์ ๊ฒฝ์ฐ์ ์ฌ์ฉ์ ํ๊ฒ ๋๋ฉด ์ฑ๋ฅ์ด ๋ฎ์์ง ์ ์์.
[ ์์ฐจ ํ์ ํน์ง ]
- ์์ฐจ ํ์์ ๋ชจ๋ ๋ฆฌ์คํธ(๋ฐฐ์ด, ์ฐ๊ฒฐ ๋ฆฌ์คํธ) ์ ์ ์ฉ์ด ๊ฐ๋ฅํ๋ค.
- ๋ฆฌ์คํธ์ ๊ฐ์ด ๋ฐ์ดํฐ๊ฐ ํค๊ฐ๊ณผ ๊ด๋ จํด์ ์๋ฌด๋ฐ ์์ ์์ด ๋จ์ํ๊ฒ ์ฐ์์ ์ผ๋ก ์ ์ฅ ๋๋ ๊ฒฝ์ฐ
- ์ฆ, ๋ฐ์ดํฐ๊ฐ ์ ๋ ฌ๋์ง ์์ ๊ฒฝ์ฐ์๋ ์์ฐจ ํ์์ด ์ ํฉ ํ ์ ์๋ค.
- ๋ฐ๋๋ก ๋ฐ์ดํฐ๊ฐ ์ ๋ ฌ์ด ๋ ์ํ๋ก ๋ค์ด์จ๋ค๋ฉด ์ด์ง ํ์์ด ํจ์จ์ ์.
(4) ์ด์ง ํ์
- ์ ๋ ฌ๋ ์ ๋ ฅ ๋ฐฐ์ด์ ๋ํด์ ์ฃผ์ด์ง ๋ฐ์ดํฐ๋ฅผ ์ ๋ฐ์ฉ ์ค์ฌ๊ฐ๋ฉด์ ์ํ๋ ๋ฐ์ดํฐ๋ฅผ ์ฐพ๋ ๋ฐฉ๋ฒ์ด๋ค.
- ์ฆ, ์ด์ง ํ์์ ์กฐ๊ฑด์ ๋ฐ๋์ ์ ๋ ฌ๋ ๋ฐฐ์ด์ด์ด์ผ๋ง ํ์์ด ๊ฐ๋ฅํ๋ค๋ ์กฐ๊ฑด์ด ์๋ค๋ ์๋ฏธ์.
- ๋ถํ ์ ๋ณต ๋ฐฉ๋ฒ์ ์ ์ฉํ ์๊ณ ๋ฆฌ์ฆ์ด๋ค.
[ ํ์ ๋ฐฉ๋ฒ ]
- ๋ฐฐ์ด์ ๊ฐ์ด๋ฐ ๊ฐ๊ณผ ํ์ํค๋ฅผ ๋น๊ตํ์ฌ ์ํ๋ ๊ฐ์ ์ฐพ์๊ฐ๋ ๋ฐฉ๋ฒ์ด๋ค.
- ์ฆ, ์ ๋ ฅ ๋ฐฐ์ด์ ๊ฐ์ด๋ฐ ๊ฐ์ธ A[Mid] ์ ํ์ํค๋ฅผ ๋น๊ต๋ฅผ ํ๊ฒ ๋๋ค. ( ํ์ํค = ๋ด๊ฐ ์ฐพ๊ณ ์ํ๋ ๋ฐ์ดํฐ )
- left index = ๋ฐฐ์ด ๋งจ ์ , right index ๋ฐฐ์ด ๋งจ ๋ ์ ์๋ฏธ.
- left index ์ right index ๋ฅผ ๋ํ ๊ฐ์ ๋ฐฐ์ด์ ํฌ๊ธฐ๊ฐ ๋ ์ ์๊ณ , ํด๋น ๋ฐฐ์ด์ ํฌ๊ธฐ์ 2๋ฅผ ๋๋์ด ๊ฐ์ด๋ฐ๋ฅผ ๊ตฌํจ.
- ๊ฐ์ด๋ฐ ๋ฐ์ดํฐ๋ฅผ ๊ตฌํ๊ฒ ๋๋ฉด, ํด๋น ๋ฐ์ดํฐ์ ํ์ํค(๋ด๊ฐ ์ฐพ๊ณ ์ํ๋ ๋ฐ์ดํฐ) ๋ฅผ ๋น๊ตํ์ฌ, ํ์ํค๊ฐ A[Mid] ๋ณด๋ค ์์ ๊ฒฝ์ฐ left , ํ์ํค๊ฐ A[Mid] ๋ณด๋ค ํด ๊ฒฝ์ฐ right ์ ์๋ค๋ ๊ฒ์ ์๊ฒ ๋๋ค.
- ์ฆ, ํ์์ ๋ฐ๋ณตํ ๋๋ง๋ค ๋์ ์์(๋ฐ์ดํฐ)์ ๊ฐ์๊ฐ ์ ๋ฐ์ฉ ๊ฐ์๊ฐ ๋๋ ํน์ง์ด ์์.
- ๋ํ, key ๊ฐ์ด A[Mid] ๊ฐ์ด๋ฐ ๊ฐ๊ณผ ๊ฐ์ผ๋ฉด ํ์์ด ๋ฐ๋ก ์ฑ๊ณต ํ ์ ์๋ ๊ฒจ
(4) ์ด์ง ํ์ - ํ์ ๊ณผ์
- ํ์ํค ๊ฐ์ด 35 ๋ผ ๊ฐ์ ํ๊ณ ์ด์ง ํ์ ์งํ
- ๋จผ์ left index 0 ๊ณผ right indext 8 ๋ฅผ ๋ํด์ 2๋ก ๋๋๊ฒ ๋๋ฉด ๊ฐ์ด๋ฐ index 4 ๋ฅผ ์ป์ ์ ์๊ฒ ๋๋ค.
- ํด๋น index 4 ๋ ๋ฐ์ดํฐ๊ฐ 30์ด ๋ค์ด๊ฐ์๊ณ , ํ์ํค 35 ์ ๋น๊ต๋ฅผ ํ๊ฒ ๋๋ฉด 35๊ฐ ๋ ํฌ๊ธฐ ๋๋ฌธ์ right ๋ฅผ ๋ณด๊ฒ๋๋ค.
- right ์์ ๋ ์ด์ง ํ์์ ํตํด ์ ๋ฐ์ ์ค์ด๊ณ ํ์ํค์ ๊ฐ์ด๋ฐ index(5+8/2=6) ๋ฅผ ๋น๊ตํ์ฌ ์ฐพ์๊ฐ๋ ๊ณผ์ ์ด ๋ ์ ์๋ค.
- ์ฐธ๊ณ ๋ก ์ํ๋ ๋ฐ์ดํฐ๋ฅผ ์ฐพ์์ ๊ฒฝ์ฐ ์ธ๋ฑ์ค๋ฅผ ๋ฐํํจ.
(4) ์ด์ง ํ์ - ํน์ง
[ ์ฑ๋ฅ ]
- ํ ๋ฒ ํ์ํ ๋๋ง๋ค ํ์ ๋์์ด ๋๋ ๋ฐ์ดํฐ์ ๊ฐ์๊ฐ ์ ๋ฐ์ฉ ๊ฐ์ํ๊ธฐ ๋๋ฌธ์ O(logn) ์ฑ๋ฅ์ ๊ฐ์ง.
[ ํน์ง ]
- ๋ฐ์ดํฐ๊ฐ ์ด๋ฏธ ์ ๋ ฌ๋ ๊ฒฝ์ฐ์๋ง ์ ์ฉ์ด ๊ฐ๋ฅํ๋ค
- ์ฝ์ /์ญ์ ์ฐ์ฐ ์ ์ ๋ ฌ ์ํ์ ์ ์ง๋ฅผ ์ํด ๋ฐ์ดํฐ ์ด๋์ด ๋ฐ์ ํ ์ ์๋ค๋ ๋จ์ ? ์ด ์์.
- ์ฆ, ์ฝ์ /์ญ์ ์ ๊ฐ์ ๋์ ์ฐ์ฐ์ด ๋ง์ ์์ฉ์๋ ๋ถ์ ํฉ ํ ์ ์์.
- ๋งค๋ฒ ์ฝ์ ์ญ์ ์ ๊ฐ์ด ๋ฐฐ์ด์ด ๋ณ๊ฒฝ์ด ๋๋ฉด ์ ๋ ฌ์ ๋งค๋ฒ ํด์ค์ผ ํ๋ ๋จ์ ์ด ์์.
- ์ด๋ฌํ ๊ฒฝ์ฐ ๋ฐฐ์ด์ด ์๋ ํธ๋ฆฌ๋ฅผ ์ด์ฉํ ์ด์ง ํ์ ํธ๋ฆฌ๋ฅผ ํ์ฉํด์ ํด๊ฒฐ ํ ์ ์์.
โ 3. ์ด์ง ํ์ ํธ๋ฆฌ
- ๊ฐ ๋ ธ๋์ ์ผ์ชฝ ์๋ธํธ๋ฆฌ์ ์๋ ๋ชจ๋ ํค๊ฐ์ ๊ทธ ๋ ธ๋์ ํค๊ฐ๋ณด๋ค ์๋ค.
- ๊ฐ ๋ ธ๋์ ์ค๋ฅธ์ชฝ ์๋ธํธ๋ฆฌ์ ์๋ ๋ชจ๋ ํค๊ฐ์ ๊ทธ ๋ ธ๋์ ํค๊ฐ๋ณด๋ค ํฌ๋ค.
- ์ด ๋๊ฐ์ง ์กฐ๊ฑด์ ๋ง์กฑํ๋ ํธ๋ฆฌ๋ฅผ ์ด์ง ํธ๋ฆฌ๋ก ๋ณผ ์ ์๋ค.
(1) ์ด์ง ํ์ ํธ๋ฆฌ - ํ์ ์ฐ์ฐ
- ๋ฃจํธ ๋ ธ๋์์๋ถํฐ ํค๊ฐ์ ๋น๊ต๋ฅผ ํตํด ์ผ์ชฝ ๋๋ ์ค๋ฅธ์ชฝ ์๋ธํธ๋ฆฌ๋ฅผ ๋ฐ๋ผ ์ด๋ํ๋ฉด์ ๋ฐ์ดํฐ๋ฅผ ์ฐพ๊ฒ ๋จ.
- ์ฆ, 44 ์ ๊ฐ์ ๋ฐ์ดํฐ๋ฅผ ์ฐพ๊ฒ ๋ค๊ณ ๊ฐ์ ํ๋ฉด ๊ฐ ๋ ธ๋๋ณด๋ค ํฌ๋ฉด ์ค๋ฅธ์ชฝ ์์ผ๋ฉด ์ผ์ชฝ์ผ๋ก ๋ด๋ ค๊ฐ๋ฉด์ ์ฐพ๊ฒ ๋๋ ์๋ฆฌ์.
(2) ์ด์ง ํ์ ํธ๋ฆฌ - ์ฝ์ ์ฐ์ฐ
- ๊ธฐ์กด์ ๋ฐฐ์ด ์ด์ง ํ์ ๋ฐฉ์์ ์ฝ์ ์ญ์ ์ ๊ฐ์ ์ฐ์ฐ์ด ํ์ํ ๊ฒฝ์ฐ์๋ ์ฝ์ ๊ณผ ์ญ์ ์ ๋ํด ๋งค๋ฒ ์ ๋ ฌ์ ํด์ค์ผ ํ๊ธฐ ๋๋ฌธ์ ์ ํฉํ์ง ๋ชปํ์ง๋ง, ์ด์ง ํ์ ํธ๋ฆฌ ๋ฐฉ์์ ์ด๊ฑธ ํด๊ฒฐ ํ ์ ์์.
- ์ด์ง ํ์ ํธ๋ฆฌ ์ฝ์ ์ฐ์ฐ์ ์ฝ์ ํ ๋ฐ์ดํฐ๋ฅผ ํ์ํ ํ, ํ์์ด ์คํจํ ์์น์ ์๋ก์ด ๋ ธ๋๋ฅผ ์์ ๋ ธ๋๋ก ์ถ๊ฐํ๋ ๋ฐฉ์์.
- ์ฆ, 25 ๋ฐ์ดํฐ๋ฅผ ์ฐพ๋ ๊ณผ์ ์์ 35 -> 30 -> 15 -> 22 ์ธ ๊ธฐ์กด ๋ ธ๋๋ค์ ํ๊ฒ ๋๋๋ฐ ์ด๋ ๋ ์ด์ ๋ ธ๋๊ฐ ์๋๋ฐ 25๋ฅผ ์ฐพ๋ ๊ฒฝ์ฐ์๋ ํ์์ด ์คํจํ๊ธฐ ๋๋ฌธ์ ๋ฐ์ 25 ๋ ธ๋๋ฅผ ์๋ก ๋ง๋ค์ด์ฃผ๊ฒ ๋๋ค.
- ์ฆ, ์ฝ์ ์ 25 ์ซ์๊ฐ ์๋์ง ๊ฒ์ฆ์ ํ ๋ค ์๋ค๊ณ ํ๋จํ ๋ค ์ฝ์ ์ ํด์ฃผ๋ ๋ฐฉ์์ด๋ผ๊ณ ๋ณผ ์ ์์.
- ๊ฒฐ๋ก ์ ํ์์ด ์ฑ๊ณตํ ๊ฒฝ์ฐ์๋ ๋ฐ์ดํฐ๊ฐ ์ด๋ฏธ ์กด์ฌํ๋ค๊ณ ํ๋จ์ด ๋๋ฏ๋ก ์ฝ์ ์์ด ์ข ๋ฃ๊ฐ ๋๋ค๊ณ ๋ณผ ์ ์์.
(3) ์ด์ง ํ์ ํธ๋ฆฌ - ์ญ์ ์ฐ์ฐ
- ํ์์ ๋ ธ๋ successor, ๊ณ์น์ ๋ ธ๋: ์ด๋ค ๋ ธ๋์ ํค๊ฐ ๋ฐ๋ก ๋ค์ ํค๊ฐ์ ๊ฐ๋ ๋ ธ๋๋ฅผ ์๋ฏธํ๋ค.
- ๋ํ, ํธ๋ฆฌ์์ ์ด์ง ํ์์ ์ญ์ ๋๋ ๋ ธ๋์ ์์ ๋ ธ๋์ ๊ฐ์์ ๋ฐ๋ผ ๊ตฌ๋ถํด์ ์ฒ๋ฆฌ
- ์ฆ, ์์ ๋ ธ๋์ ๊ฐ์๊ฐ ๋ค๋ฅธ ๊ฒฝ์ฐ์ ๋ฐ๋ผ ์ญ์ ๋๋ ๋ฐฉ์์ด ์ฌ๋ฌ๊ฐ๊ฐ ์ฐ์.
[ ์์ ๋ ธ๋๊ฐ ์๋ ๊ฒฝ์ฐ(๋ฆฌํ ๋ ธ๋์ ๊ฒฝ์ฐ) ]
- ๋จ๋ ๋ ธ๋๊ฐ ์์ผ๋ฏ๋ก ์์น ์กฐ์ ์ด ๋ถํ์ํด, ๋จ์ ์ญ์ ๋ฅผ ํ๋ฉด ํด๊ฒฐ์ด ๋๋ค.
- ์์ ๊ฐ์ด 22 ๋ฅผ ์ญ์ ํ๋ ๊ฒฝ์ฐ ๋จ์ํ 22 ๋ฅผ ๊ฐ์ง๋ ๋ ธ๋๋ฅผ ์ ๊ฑฐํ๋ฉด ๋๋ค.
[ ์์ ๋ ธ๋๊ฐ 1๊ฐ์ธ ๊ฒฝ์ฐ ]
- ์์ ๋ ธ๋๊ฐ 1๊ฐ์ธ ๊ฒฝ์ฐ์๋ ์ญ์ ๋๋ ๋ ธ๋์ ์์น๋ก ์ฌ๋ฆฌ๋ฉด์ ์๋ธํธ๋ฆฌ ์ ์ฒด๋ ๋ฐ๋ผ ์ฌ๋ฆฌ๊ฒ ๋จ,
- ์์ ๊ฐ์ด 30 ๋ ธ๋๋ฅผ ์ญ์ ํ๋ค๊ณ ๊ฐ์ ํ๋ฉด, 30 ๋ ธ๋๋ฅผ ์ ๊ฑฐ ํ ๋ค 15 ์ ๊ทธ ์๋ธํธ๋ฆฌ๋ฅผ ๊ธฐ์กด 30 ์ ์๋ฆฌ๋ก ์ฌ๋ฆฌ๊ฒ ๋จ
[ ์์ ๋ ธ๋๊ฐ 2๊ฐ์ธ ๊ฒฝ์ฐ ]
- ์์ ๋ ธ๋๊ฐ 2๊ฐ์ธ ๊ฒฝ์ฐ์๋ ์ญ์ ๋๋ ๋ ธ๋์ ํ์์ ๋ ธ๋๋ฅผ ์ญ์ ๋๋ ๋ ธ๋์ ์์น๋ก ์ฌ๋ฆฌ๊ฒ ๋๋ค.
- ๊ทธ๋ฆฌ๊ณ ํ์์ ๋ ธ๋๋ฅผ ์ญ์ ๋๋ ๋ ธ๋๋ก ์ทจ๊ธํ์ฌ ์์ ๋ ธ๋์ ๊ฐ์์ ๋ฐ๋ผ ๋ค์ ์ฒ๋ฆฌํ๊ฒ ๋จ.
(4) ์ด์ง ํ์ ํธ๋ฆฌ - ์ฑ๋ฅ
- root ๋ ธ๋๋ก ๋ถํฐ ํ์ ์ฆ, ๋ด๋ ค์ค๊ธฐ ๋๋ฌธ์ ํค๊ฐ ๋น๊ต ํ์์ ๋น๋กํ๊ฒ ๋จ.
- ์ฆ, ํธ๋ฆฌ์ ๋์ด h -> O(h) ์ฑ๋ฅ์ ๊ฐ์ง๊ฒ ๋จ. ( ์ต๋ ๋์ด O(logn) , ์ต์ ๋์ด O(n) )
- ๊ฒฐ๊ตญ ํธ๋ฆฌ์ ๋์ด์ ๋ฐ๋ผ ์ด์ง ํ์์ ๋ํ ์ฑ๋ฅ์ด ๋ฌ๋ผ์ง ์ ์์.
- ๊ทธ๋ฆฌ๊ณ ์ด์ง ํ์ ํธ๋ฆฌ์์ ์ฝ์ ๊ณผ ์ญ์ ๋ฅผ ๋น๋ฒํ ํ๊ฒ ๋๋ค๋ฉด, ๊ฒฝ์ฌ ์ด์ง ํธ๋ฆฌ๊ฐ ๋ ๊ฐ๋ฅ์ฑ์ด ๋์์ง๊ธฐ ๋๋ฌธ์ ํ๊ท ์ํ ์๊ฐ์ด ์๋ ์ต์ ์ํ ์๊ฐ์ด ๋ ์ ์๊ฒ ๋๋ค. ์ด๋ฌํ ๊ฒ์ ํด๊ฒฐ ์ฆ, ํ๊ท ์ํ ์๊ฐ์ ๋ณด์ฅํ๊ธฐ ์ํด์ ๊ท ํ ํ์ ํธ๋ฆฌ๋ ์กด์ฌํจ.
'๐๋ฐฉ์กํต์ ๋ํ๊ต > ๐ป์ปดํจํฐ๊ณผํ ๊ฐ๋ก ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[์ปดํจํฐ๊ณผํ ๊ฐ๋ก ] 4๊ฐ - ์๋ฃ๊ตฌ์กฐ(2) (0) | 2025.09.19 |
---|---|
[์ปดํจํฐ๊ณผํ ๊ฐ๋ก ] 3๊ฐ - ์๋ฃ๊ตฌ์กฐ(1) (0) | 2025.09.17 |
[์ปดํจํฐ๊ณผํ ๊ฐ๋ก ] 10๊ฐ - ์ปดํจํฐ ๊ตฌ์กฐ(2) (0) | 2025.09.15 |
[์ปดํจํฐ๊ณผํ ๊ฐ๋ก ] 9๊ฐ - ์ปดํจํฐ ๊ตฌ์กฐ(1) (0) | 2025.09.08 |
[์ปดํจํฐ๊ณผํ ๊ฐ๋ก ] 5๊ฐ - ์๊ณ ๋ฆฌ์ฆ(1) (0) | 2025.09.04 |