โ
1. ํต ์ ๋ ฌ
(1) ํต ์ ๋ ฌ ์ด๋?
- ํผ๋ฒ(๋ถ๋ถ ๋ฐฐ์ด๋ก ๋ถํ ํ๋ ๊ธฐ์ค ๋ฐ์ดํฐ)์ ๊ธฐ์ค์ผ๋ก ๋ ๋ถ๋ถ๋ฐฐ์ด๋ก ๋ถํ ํด์ ๊ฐ ๋ถ๋ถ๋ฐฐ์ด์ ๋ํด์ ํต ์ ๋ ฌ์ ์ํ์ ์ผ๋ก ์ ์ฉํ๋ ๋ฐฉ์์ ์๋ฏธํจ.
- ** ํผ๋ฒ์ ๋ณดํต ์ฃผ์ด์ง ๋ฐฐ์ด์ ์ฒซ ๋ฒ์งธ ๋ฐ์ดํฐ๋ก ์ง์ ํจ. **
(2) ํต ์ ๋ ฌ - ์๋ฆฌ
- ํผ๋ฒ: ๋ฐฐ์ด์ ์ฒซ ๋ฒ์งธ ๋ฐ์ดํฐ์ธ 30์ ์ง์ ํด๋์.
- ํด๋น ํผ๋ฒ์ ๊ธฐ์ค์ผ๋ก ํผ๋ฒ ๋ณด๋ค ์์ ๊ฐ์ ์ผ์ชฝ ํฐ ๊ฐ์ ์ค๋ฅธ์ชฝ์ผ๋ก ์ ๋ ฌ์ ๋ฐ๋ณต ํ๋ ์๋ฆฌ์.
(3) ํต ์ ๋ ฌ - ์ ์ฒด์ ์ธ ์ฒ๋ฆฌ ๊ณผ์
- ๋ถํ : ํผ๋ฒ์ด ์ ์๋ฆฌ๋ฅผ ์ก๊ณ ์ผ์ชฝ๊ณผ ์ค๋ฅธ์ชฝ์ ๊ฐ์ ํฌ๊ณ ์์ ๊ฐ์ผ๋ก ๋จ์ํ ๋๋ ๊ณผ์
- ** ํผ๋ฒ์ ์ ํด๋๊ณ ๋ถํ ํจ์๋ฅผ ํตํด์ ๊ณ์ํด์ ๋ถํ ํ๋ฉด์ ์ ๋ ฌํ๋ ๊ณผ์ ์ด ํต ์ ๋ ฌ์. **
- TIP: ํผ๋ฒ์ ์ ํด๋๊ณ ๋๊ฐ์ ๋ถ๋ถ๋ฐฐ์ด๋ก ๋ถํ ์ ํ๋ฉด, ํด๋น ๋ ๊ฐ์ ๋ถ๋ถ๋ฐฐ์ด์๋ ๊ฐ๊ฐ ํผ๋ฒ์ ๋ ์ ํด์ ๋ฐ๋ณต์ ํจ.
(4) ํต ์ ๋ ฌ - ์๊ณ ๋ฆฌ์ฆ
- ๋ถํ ํจ์: ์ ํด์ง ํผ๋ฒ์ ์์น๋ฅผ ์ฐพ์์ ๋ฃ์ด์ฃผ๋ ๊ณผ์ ๋ฐ ์ผ์ชฝ๊ณผ ์ค๋ฅธ์ชฝ ๋ถ๋ถ๋ฐฐ์ด์ ํผ๋ฒ๋ณด๋ค ํฌ๊ณ ์์ ๊ฐ์ผ๋ก ๋ง๋ค์ด์ฃผ๋ ๊ณผ์ ๋ฐ ํจ์๋ก ๋ณผ ์ ์์.
- ** ๋ํ, ๋ ๋ถ๋ถ๋ฐฐ์ด๋ก ๋๋๋ฉด ๋๊ฐ์ ๋ถ๋ถ๋ฐฐ์ด์๋ ๊ฐ๊ฐ์ ํผ๋ฒ์ด ๋ ๋๊ฐ์ ๋ถ๋ถ๋ฐฐ์ด๋ก ๊ฐ๊ฐ ๋๋๋ ๊ณผ์ ์ ์งํํจ. **
|
|
- (1) if(n > 1): ๋ฐฐ์ด์ ๋ฐ์ดํฐ๊ฐ ํ ๊ฐ ์ด์์ผ ๊ฒฝ์ฐ ์กฐ๊ฑด๋ฌธ์ ์ํํจ.
- (2) pivot = Partition(A[], n): ๋ฐฐ์ด์ ๋ฐ๊ณ , ํด๋น ๋ฐฐ์ด์ ํฌ๊ธฐ n์ ๋ฐ์ ๋ด๋ถ์ ์ผ๋ก ํผ๋ฒ์ ์ ํด์ ํผ๋ฒ์ ๊ธฐ์ค์ผ๋ก ํฌ๊ณ ์์ ๊ฐ๋ค์ ๋ถํ ํด์ฃผ๊ณ ์ต์ข
์ ์ผ๋ก ํผ๋ฒ์ ์์น๋ฅผ ์ฐพ์์ ๊ฑฐ๊ธฐ์ ํผ๋ฒ ๋ฐ์ดํฐ๋ฅผ ๋ฃ์ด์ฃผ๋ฉฐ, ๋ง์ง๋ง์ผ๋ก pivot ์ ์ธ๋ฑ์ค๋ฅผ ๋ฆฌํดํจ.
- (3) Partition(): ์ํ ํธ์ถ(์ฌ๊ท ํธ์ถ)์ ๋์์ด ๋๋ฉฐ, ํด๋น ํจ์๋ฅผ ํตํด์ A[0] ํผ๋ฒ์ ๊ธฐ์ค์ผ๋ก ์ผ์ชฝ ์ค๋ฅธ์ชฝ ๊ฐ์ ๋๋๋ฉฐ ํผ๋ฒ์ ์ ์๋ฆฌ๋ฅผ ์ฐพ์๊ฐ ๋ถํ ์ด ๋๋ ๊ณผ์ ์ ์ฒ๋ฆฌํด์ค.
- (4) QuickSort(A[pivot-1], pivot,): ์ด์ ์ ๋ฆฌํด ๋ฐ์ pivot ์ ์ธ๋ฑ์ค๋ฅผ ๊ธฐ์ค์ผ๋ก ์ค์ ๋ก ๋ฐฐ์ด์ ์๋ผ์ ์ผ์ชฝ ๋ถ๋ถ๋ฐฐ์ด์ ๋ํ ํต ์ ๋ ฌ์ ์ํ ํธ์ถ(์ฌ๊ท) ํจ.
- (5) QuickSort(A[pivot+1], n-pivot-1): ๋ง์ฐฌ๊ฐ์ง๋ก pivot ์ธ๋ฑ์ค๋ฅผ ๊ธฐ์ค์ผ๋ก ์ค์ ๋ก ๋ฐฐ์ด์ ์๋ผ์ ์ค๋ฅธ์ชฝ ๋ถ๋ถ๋ฐฐ์ด์ ๋ํ ํต ์ ๋ ฌ์ ์ํํจ.
- TIP: ํต ์ ๋ ฌ์ ์ํํ๋ ์๊ณ ๋ฆฌ์ฆ์์ ๋
ผ๋ฆฌ์ ์ด์ง ์๊ณ ์ค์ ๋ก ๋ฌผ๋ฆฌ์ ์ผ๋ก ๋ฐฐ์ด์ ์ฌ๋ผ์ด์ฑํด์ ๋ ๋ถ๋ถ๋ฐฐ์ด๋ก ๋๋.
- ์์ ์ฝ๋์ ๋ถํ ๊ณผ์ ์ด๋ฉฐ, ์ผ์ชฝ๊ณผ ์ค๋ฅธ์ชฝ ๋ถ๋ถ๋ฐฐ์ด๋ก ๋๋ ์ ์ต์ข
์ ์ผ๋ก ํผ๋ฒ์ ์์น ์ธ๋ฑ์ค๋ฅผ ๋ฆฌํดํจ.
- ** Left > Right ๊ฐ ํฐ ๊ฒฝ์ฐ์๋ ๊ตํ ๋ณด๋ค๋ ์ผ๋ฐฉ์ ์ผ๋ก ํผ๋ฒ์ธ 30์ Right ์ ์์นํ 25์ ๊ตํ์ ํ๋ ๊ฒ์. **
(5) ํต ์ ๋ ฌ - ์ฒ๋ฆฌ ์์ ์์ (ํต์ฌ)
- ์ผ์ชฝ ๋ถ๋ถ๋ฐฐ์ด์ ๋จผ์ ์ฌ๊ทํธ์ถ์ ํ๊ธฐ ๋๋ฌธ์ ์ผ์ชฝ ๋ถ๋ถ๋ฐฐ์ด์ ์ฐ์ ์ ์ผ๋ก ๋จผ์ ์ฒ๋ฆฌ๋ฅผ ํ ๋ค, ๋ค์ ์ค๋ฅธ์ชฝ ๋ถ๋ถ๋ฐฐ์ด์ ์ฒ๋ฆฌํ๊ฒ ๋๋ค.
- ์ด๋ ์ค๋ฅธ์ชฝ ๋ถ๋ถ๋ฐฐ์ด ๋ํ ๋๋๋ฉด ์ผ์ชฝ ๋ถ๋ถ๋ฐฐ์ด์ด ๋์ค๊ฒ ๋๋๋ฐ ์ฌ๊ธฐ์๋ ์ผ์ชฝ ๋ถ๋ถ๋ฐฐ์ด์ ๋จผ์ ์ฒ๋ฆฌํ๋ ์์ผ๋ก ์งํ๋จ.
- ** ์ฆ, ์ค๋ฅธ์ชฝ์ผ๋ก ์งํ์ด ๋ ๋ ์ฒ๋ฆฌ๋ ์ผ์ชฝ ๋ถ๋ถ๋ฐฐ์ด์ ์ฒ๋ฆฌํ๋ ์๋ฆฌ๋ก ๋ฐ๋ณต์ ์ผ๋ก ์ ๋ ฌ์ ํ๋ ์๋ฆฌ์. **
(6) ํต ์ ๋ ฌ - ์ฑ๋ฅ๊ณผ ํน์ง
- ํผ๋ฒ๊ณผ ๋น๊ตํ๋ ํ์: ๊ฐ ๋ฐ์ดํฐ๋ ํผ๋ฒ๊ณผ 1ํ ๋๋ ๋ง์์ผ 2ํ์ฉ ๋น๊ตํจ. ( 2ํ์ฉ ๋น๊ตํ๋ ๊ฒฝ์ฐ๋ ๋ฐ์ดํฐ๋ฅผ ๊ตํํ๋ ๊ณผ์ ์์ Left < Right ์ ๋ํ ๋น๊ต๋ฅผ ํตํด์ ๋ฐ๊ฟ๋๋๋์ง ์ฌ๋ถ๋ฅผ ํ์
ํ๊ณ ๋ฐ๊พธ๋๋ฐ ์ด๋ด ๋ 1ํ๊ฐ ์ถ๊ฐ ๋จ. )
- Partition() ์ฑ๋ฅ ๊ฒฐ๋ก : ์
๋ ฅ ํฌ๊ธฐ n์ ๋ํด ์ํํ๋ ์ฐ์ฐ ์๊ฐ ์ ํํ n์ ๋น๋กํ๊ธฐ ๋๋ฌธ์ θ(n) ์ ์๊ฐ๋ณต์ก๋๋ฅผ ๊ฐ์ง.
- ๋น
์ค: ์ต์
์ ๊ฒฝ์ฐ๋ฅผ ๊ธฐ์ค์ผ๋ก ์ด ์ ๋๋ณด๋ค ๋ ๋๋น ์ง์ง ์๋๋ค๋ ์ํ์ ์ ์ ํด๋์ ๊ฒ์ ์๋ฏธํจ.
- ๋น
์ค๋ฉ๊ฐ: ์ต์ ์ ๊ฒฝ์ฐ๋ฅผ ๊ธฐ์ค์ผ๋ก ์๋ฌด๋ฆฌ ์ ๋ผ๋ ์ด ์ ๋๋ ๊ฑธ๋ฆฐ๋ค๋ ํํ์ ์ ์ ํด๋์ ๊ฒ์ ์๋ฏธํจ.
- ** ๋น
์ธํ: ๋น
์ค(์ํ), ๋น
์ค๋ฉ๊ฐ(ํํ)์ ๋ง์กฑํ๋ ์ ํํ ์ฑ์ฅ๋ฅ ๋ก์จ, ํด๋น ์๊ณ ๋ฆฌ์ฆ์ ์ ํํ ์๋๋ก ๋ณผ ์ ์์. **
- ์ฆ, Partition() ํจ์์ ๊ฒฝ์ฐ ์
๋ ฅ ๋ฐ์ดํฐ์ ์ํ์ ์๊ด์์ด ํญ์ ๋ฐฐ์ด ์ ์ฒด๋ฅผ ํ ๋ฒ ํ์ด์ผ๋ง ์ผ์ด ๋๋๊ธฐ ๋๋ฌธ์ θ(n) ์.
- QuickSort ์ฌ๊ท: ํด๋น ์ฌ๊ท ์์ฒด๋ ์ ํ์์ผ๋ก T(n_L) ๊ณผ T(n_R) ๋ก ํ๊ธฐ ํ ์ ์์ผ๋ฉฐ, ํด๋น T(n_L), T(n_R) ์ ๋ถํ ๋ ๋ ๋ถ๋ถ๋ฐฐ์ด์ ๋ฐ์ดํฐ ํฌ๊ธฐ๋ก ๋ณผ ์ ์์.
- ์ฆ, ํผ๋ฒ์ ์ ์ธํ ์ ๋ ฌ ํ ๋ฐ์ดํฐ๋ค์ n_L + n_R = n - 1 ์ด ๋ ์ ์์. (-1์ ํผ๋ฒ์ ์ ๋ ฌ ๋ถ๋ถ๋ฐฐ์ด ๋์์ด ์๋๊ธฐ ๋๋ฌธ์)
- ** ๋ํ, ์ต์
์ ๊ฒฝ์ฐ ํผ๋ฒ์ ๊ฐ์ฅ ์์ ๊ฐ ๋๋ ๊ฐ์ฅ ํฐ ๊ฐ์ผ๋ก ์ก๊ฒ ๋๋ฉด, ํ์ชฝ ๋ถ๋ถ ๋ฐฐ์ด์ 0๊ฐ๋ก ๋น์ด์๊ฒ ๋๊ณ ๋ค๋ฅธ์ชฝ ๋ถ๋ถ ๋ฐฐ์ด์ n - 1 ๊ฐ์ ๋ถ๋ถ ๋ฐฐ์ด์ ๊ฐ์ง๊ฒ ๋๋ฏ๋ก, n - 1๊ฐ์ ๋ํด์ ์ฒ์๋ถํฐ ๋ถํ ์ ๋ค์ํ๋ ๊ผด์ด ๋ ์ ์์. **
- ** ์ด๋ฌํ ์ต์
๊ณผ ์ต์ ์ ๋ชจ๋ ๋ํ๊ฐ์ด ํ๊ท ์ ์ธ ์ํ์๊ฐ์ด ๋ ์ ์์. **
- ๊ฒฐ๋ก : T(n) = T(n_L) + T(n_R) + θ(n) ์ด ๋ ์ ์์.
(7) ํต ์ ๋ ฌ - ์ฑ๋ฅ๊ณผ ํน์ง ( ์ต์
์ ๊ฒฝ์ฐ )
- ์ด๋ฏธ ์ ๋ ฌ์ด ๋ ๋ฐ์ดํฐ์ธ ๊ฒฝ์ฐ 0:n-1 ๋๋ n-1:0 ์ผ๋ก ๋ถํ ์ด ๋๊ฒ ๋จ.
- ์
๋ ฅ ๋ฐ์ดํฐ๊ฐ ์ ๋ ฌ๋ ๊ฒฝ์ฐ์ ํผ๋ฒ์ ๋ฐฐ์ด์ ์ฒซ ๋ฒ์งธ ์์๋ก ์ ํ ๊ฒฝ์ฐ
- ์ด๋, ํผ๋ฒ์ด ํญ์ ์ต์๊ฐ์ด๋ ์ต๋๊ฐ์ด ๋๊ธฐ ๋๋ฌธ์ ์ต์
์ ๊ฒฝ์ฐ๊ฐ ๋ ์ ์์.
- θ(n) ์์ฒด๋ ํผ๋ฒ์ด ์ ์๋ฆฌ๋ฅผ ์ฐพ์๊ฐ๋ ๊ทธ ์์ ๊น์ง์ ์ฐ์ฐ๋์ ์๋ฏธํ ์ ์๋ค.
| ๋จ๊ณ |
์ํํ๋ ์ผ(θ ๊ด์ ) |
์ฌ๊ท ํธ์ถ (T ๊ด์ ) |
| 1๋จ๊ณ |
n๊ฐ๋ฅผ ํ์ด์ ํผ๋ฒ 1๊ฐ ๊ณ ์ |
T(n - 1) |
| 2๋จ๊ณ |
n - 1 ๊ฐ๋ฅผ ํ์ด์ ํผ๋ฒ 1๊ฐ ๊ณ ์ |
T(n - 2) |
| 3๋จ๊ณ |
n - 2 ๊ฐ๋ฅผ ํ์ด์ ํผ๋ฒ 1๊ฐ ๊ณ ์ |
T(n - 3) |
| ... |
... |
... |
| ํฉ๊ณ |
n + (n - 1) + (n - 2) + ... + 1 |
O(n^2) |
- ํ๋ฅผ ํตํด ์๋ฅผ ๋ค๋ฉด, ์์ ๊ฐ์ด ์
๋ ฅ ๋ฐ์ดํฐ ์ ๋ ฌ๋ ๊ฒฝ์ฐ ์ ์ผ ์ฒซ ๋ฒ์งธ ๊ฐ์ ํผ๋ฒ์ผ๋ก ์ง์ ํ๋ค๊ณ ๊ฐ์ ํ๋ฉด, ํผ๋ฒ์ด ์ ์๋ฆฌ๋ฅผ ์ฐพ์๊ฐ๊ณ ๋จ์ ๋ฐ์ดํฐ๋ ๊ฒฐ๊ตญ n - 1 ๊ฐ์ ๋ฐ์ดํฐ๋ค์ด ๋จ๊ธฐ ๋๋ฌธ์ ์ดํ์ n - 1, n - 2, n - 3 ... ๋ฐ๋ณต์ ์ผ๋ก ์ฌ๊ทํธ์ถ์ ํ๋ฉด์ ํผ๋ฒ์ ์ ์๋ฆฌ์ ๋ฃ์ผ๋ฉฐ ์ ๋ ฌ์ ํ๊ฒ ๋๋ค.
- ์ด ๊ฒฝ์ฐ์์ ์ฌ๊ท ํธ์ถ์ ํฌํจํ ๋ชจ๋ ์ฐ์ฐ ํ์๋ฅผ ๊ณ์ฐํ๋ฉด ๊ฒฐ๊ตญ n + (n - 1) + (n - 2) + ... 1 ์ ๋ค ๋ํ์ ๋ n^2 ์ด ๋จ.
1์ธต: โ โ โ โ โ โ (n๊ฐ)
2์ธต: โ โ โ โ โ (n-1๊ฐ)
3์ธต: โ โ โ โ (n-2๊ฐ)
4์ธต: โ โ โ (n-3๊ฐ)
...
n์ธต: โ (1๊ฐ)
=> n x n / 2 = n^2/2 ( ์ต๊ณ ์ฐจํญ: n^2 )
- ์ด์ ๋, ๋ฑ์ฐจ์์ด์ ํฉ ์๋ฆฌ๋ฅผ ํตํด ๊ตฌํ๊ฒ ๋๋ฉด n-1, n-2 .. ๋ฐ์ดํฐ๋ฅผ ์ฌ๊ทํธ์ถ ๊ด์ ์์๋ณด๋ฉด ์ง๊ฐ์ผ๊ฐํ์ ๋ชจ์ต์ ๋๊ฒ ๋๋๋ฐ, ์ด๋ ๊ฒฐ๊ตญ ์ ์ฒด ๋ฉด์ ์ด ๋ธ๋ก์ ์ด ๊ฐ์๊ฐ ๋๊ธฐ ๋๋ฌธ์ ์ง๊ฐ์ผ๊ฐํ์ ๋์ด๋ฅผ ๊ตฌํ๊ณ , ์ต๊ณ ์ฐจํญ์ ๋ณด๋ฉด n^2 ์ด ๋จ.
- ๊ฒฐ๊ณผ ์๊ฐ๋ณต์ก๋: O(n^2)
(8) ํต ์ ๋ ฌ - ์ฑ๋ฅ๊ณผ ํน์ง ( ์ต์ ์ ๊ฒฝ์ฐ )
- ํผ๋ฒ์ด ์ ์๋ฆฌ๋ฅผ ์ก๊ณ ๋ถ๋ถ๋ฐฐ์ด๋ก ๋ถํ ํ๋ ๊ณผ์ ์ด n/2:n/2 (์ผ์ชฝ, ์ค๋ฅธ์ชฝ ๋ถ๋ถ๋ฐฐ์ด) ๋ก ๋๋ ์ง๋ ๊ฒฝ์ฐ๊ฐ ์ด์์ ์ธ ๊ฒฝ์ฐ์.
- ํผ๋ฒ์ด ํญ์ ์ค๊ฐ๊ฐ์ด ๋๋ ๊ฒฝ์ฐ์ด๊ธฐ ๋๋ฌธ์ ํด๋น ์ ํ์์ ํ๋ฉด O(nlogn) ์ ์๊ฐ๋ณต์ก๋๋ฅผ ๊ตฌํ ์ ์์.
(9) ํต ์ ๋ ฌ - ์ฑ๋ฅ๊ณผ ํน์ง ( ํ๊ท ์ํ์๊ฐ )
- ** ํต ์ ๋ ฌ์ ํ๊ท ์ํ์๊ฐ์ O(nlong) ์ด๋ฉฐ, ์ด์ ๋ ์ํ์ ์ผ๋ก ํผ๋ฒ์ด ๋งค๋ฒ ์ต๋๊ฐ์ด๋ ์ต์๊ฐ์ผ๋ก๋ง ๋ฝํ ํ๋ฅ ์ ๊ทนํ ๋ฎ๊ณ , ์ค๋ น ๋ช ๋ฒ ๋์๊ฒ ๋ฝํ๋๋ผ๋, ๋จ ํ ๋ฒ๋ง ์ค๊ฐ์ฏค ๋๋ ํผ๋ฒ์ด ๋ฝํ๋ฉด ๋ฆฌ์คํธ ํฌ๊ธฐ๊ฐ ํ ์ค์ด๋ค๋ฉด์ ๊ท ํ์ด ๋ง๊ธฐ ๋๋ฌธ์. **
- ํผ๋ฒ ์ ํ์ ์์๋ก ์ ํ์ด ๋ณด์ฅ๋๋ฉด, ํ๊ท ์ํ์๊ฐ์ O(nlogn) ์ผ๋ก ๋ณด์ฅ์ด ๊ฐ๋ฅํด์ง.
- ํผ๋ฒ์ ๋ฐฐ์ด์ ์ฒซ ๋ฒ์งธ ์์๋ก ์ง์ ํจ๊ณผ ๋์์ ๋ฐฐ์ด์ด ์ ๋ ฌ๋ ๊ฒฝ์ฐ๊ฐ ๊ฒฐ๊ตญ ์ต์
์ ์ํ์๊ฐ์ ๋ณด์ฅํ๊ธฐ ๋๋ฌธ์, ์ด๋ฅผ ํด๊ฒฐํ๋ฉด ํ๊ท ์ํ์๊ฐ์ธ O(nlogn) ์ผ๋ก ๋ณด์ฅ์ด ๊ฐ๋ฅํด์ง.
- ** ์ฆ, ์ผ๋ฐ์ ์ผ๋ก ํด๊ฒฐ์ ํ๊ธฐ ์ํด์๋ ํผ๋ฒ์ ์ฒซ ๋ฒ์งธ ์์๊ฐ ์๋ ๋๋ค๊ฐ(์์์ ๊ฐ)์ ์ ํํ ํ, ๋ฐฐ์ด์ ์ฒซ ๋ฒ์งธ ์์์ ์๋ก ๊ตํํ ํ ์ ๋ ฌ์ ์ํํจ. **
- ์ ์๋ฆฌ ์ ๋ ฌ ์๊ณ ๋ฆฌ์ฆ: ์
๋ ฅ ๋ฐฐ์ด ์ด์ธ์ ์ถ๊ฐ์ ์ธ ์ ์ฅ ๊ณต๊ฐ์ ์์๊ฐ๋ง ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ ์ ์๋ฆฌ ์ ๋ ฌ ์๊ณ ๋ฆฌ์ฆ์.
- ์์ ์ ์ด์ง ์์ ์ ๋ ฌ ์๊ณ ๋ฆฌ์ฆ: ๋์ผํ ๊ฐ์ด ์๋์ ์ผ๋ก ์์น๊ฐ ๋ฐ๋ ์ ์๊ธฐ ๋๋ฌธ์ ์์ ์ ์ด์ง ์์ ์ ๋ ฌ ์๊ณ ๋ฆฌ์ฆ์.
- ** ๋ถํ ์ ๋ณต ๋ฐฉ๋ฒ์ด ์ ์ฉ์ด ๋์์ผ๋ฉฐ, ๋ถํ ์ ๋ณต ๋ฐฉ๋ฒ์ด ๋๋ฉด ๊ธฐ๋ณธ์ ์ธ ํํ๊ฐ ์ํ ์๊ณ ๋ฆฌ์ฆ ํํ๋ก ๋๋ฉฐ, ์ํ ์๊ณ ๋ฆฌ์ฆ์ ์ฑ๋ฅ์ ์ ํ์์ผ๋ก ํํ์ด ๋จ. **
โ
2. ํฉ๋ณ ์ ๋ ฌ
(1) ํฉ๋ณ ์ ๋ ฌ ์ด๋?
- ์
๋ ฅ ๋ฐฐ์ด์ ๋ ๋ถ๋ถ๋ฐฐ์ด๋ก ๋ฐ๋ณต์ ์ผ๋ก ๋ถํ ์ ์ํค๊ณ , ๋ถํ ๋ ๋ถ๋ถ ๋ฐฐ์ด๋ค์ ํฉ๋ณ ์ํค๋ ๊ณผ์ ์์ ์ ๋ ฌ์ ํ๋ ๋ฐฉ์์.
(2) ํฉ๋ณ ์ ๋ ฌ - ์ ์ฒด์ ์ธ ์ํ ๊ณผ์
- ๋ถํ : ํฉ๋ณ ์ ๋ ฌ์ ๋ ์ด์ ๋๋ ์ ์์ ๋๊น์ง(์์๊ฐ 1๊ฐ๊ฐ ๋ ๋๊น์ง) ์ชผ๊ฐ๋ ๋ถํ ์์
์ ๋จผ์ ์งํํจ.
- ํฉ๋ณ: ๋ถํ ๋ ์์ 1๊ฐ์ง๋ฆฌ ๋ถ๋ถ ๋ฐฐ์ด์ ํฉ๋ณ ํ๋ ๊ณผ์ ์์ ๋ฐ์ดํฐ๋ฅผ ์ ๋ ฌํ๋ฉด์ ํฉ๋ณ์ ํ๊ฒ ๋จ.
(3) ํฉ๋ณ ์ ๋ ฌ - ์๊ณ ๋ฆฌ์ฆ
- ์ํ ์๊ณ ๋ฆฌ์ฆ์ผ๋ก, ๋ถํ ์ ๋ณต ๋ฐฉ๋ฒ์ ํ์ฉํ ์ผ์ด์ค์ด๋ค.
- ** MergeSort() ์ฌ๊ท ํธ์ถ๋ก ๋ถ๋ถ๋ฐฐ์ด์ ํฌ๊ธฐ์ธ n์ด 1์ด ๋ ๋ ๊น์ง ์ค๋ฅธ์ชฝ ๋ถ๋ถ๋ฐฐ์ด๊ณผ ์ผ์ชฝ ๋ถ๋ถ๋ฐฐ์ด์ ๋๋ ์ ์ชผ๊ฐ ๋ค ์กฐ๊ฑด๋ฌธ์ ์ํด์ ๋ ์ด์ ์ชผ๊ฐค ์ ์๋ค๊ณ ํ๋จ์ด ๋๋ฉด, Merge() ํจ์๋ฅผ ํธ์ถํด ๋ ๋ถ๋ถ๋ฐฐ์ด์ ์ ๋ ฌํ๋ฉด์ ํฉ๋ณ์ ํ๊ฒ ๋จ. **
- ์ฝ๊ฒ ๋งํด, MergeSort() ์ฌ๊ทํธ์ถ ๋จ๊ณ์์๋ ์ผ์ชฝ ํ์ ๊ทธ๋ฃน์ด ๋จผ์ ์์ ํ ๋ถํ ์ด ๋๊ณ ํฉ์ณ์ง ๋ค์ ์ค๋ฅธ์ชฝ ๋ถํ ์ด ์ผ์ด๋๊ณ ํฉ์ณ์ง๋ ๊ณผ์ ์ด ๋๋ค.
- ** ์ฆ, 8๊ฐ ๋ฐ์ดํฐ๊ฐ ์๋ค๊ณ ๊ฐ์ ํ๋ฉด, 4๊ฐ๋ก ์ชผ๊ฐ๊ณ ๋ค์ ์ผ์ชฝ 2๊ฐ๋ก ์ชผ๊ฐ๊ณ ๋ค์ ์ผ์ชฝ 1๊ฐ๋ก ์ชผ๊ฐ๊ณ ์ด ์ชผ๊ฐ์ง 1๊ฐ์ 1๊ฐ๋ฅผ ํฉ๋ณ๊ณผ์ ์ ํตํด์ 2๊ฐ๋ฅผ ํฉ์ณ์ 2๊ฐ์ ์ ๋ ฌ๋ ๋ฐฐ์ด๋ก ๋ง๋ค๊ณ , ๋ค์์ผ๋ก 2๊ฐ์ 2๊ฐ๋ฅผ ํฉ์ณ์ 4๊ฐ์ ์ ๋ ฌ๋ ๋ฐฐ์ด๋ก ๋ง๋ค๊ณ , ์ดํ์ ์ค๋ฅธ์ชฝ 4๊ฐ์ ๋ถ๋ถ ๋ฐฐ์ด์ ์ผ์ชฝ์ ๊ธฐ์ค์ผ๋ก ๋ ์ชผ๊ฐ๊ณ ํฉ๋ณ์ ํ๋ ๊ณผ์ ์ ๋ฐ๋ณตํจ. **
(4) ํฉ๋ณ ์ ๋ ฌ - ์๊ณ ๋ฆฌ์ฆ ( Merge() ํจ์์ ๋์ )
- Merge() ํจ์๋ ๋ถํ ๋ ๋ฐ์ดํฐ๋ฅผ ํฉ๋ณ์ ์์ผ์ฃผ๋ ์ญํ ์ ํด์ค.
- ํฉ๋ณ ๊ณผ์ ์์๋ ๋ถํ ๋ ๋ ๋ถ๋ถ๋ฐฐ์ด์ ๋ํด์ ์์์ ๋ถํฐ ์ฐจ๋ก๋ก ์๋ก ๋น๊ต๋ฅผ ํ๋ฉด์ ๋ฐฐ์ด์ ์ ๋ ฌ์ ํ๊ฒ ๋จ.
- ๋ถ๋ถ ๋ฐฐ์ด B, C ๊ฐ ์๋ค๊ณ ํ๋ฉด, ๊ฒฐ๊ณผ ๋ฐฐ์ด์ ๋ ๋ถ๋ถ๋ฐฐ์ด์ ๋น๊ตํ ๊ฐ๋ค์ ๋น๊ต๋ฅผ ํตํด์ ์ ๋ ฌ์ ํ๊ฒ ๋จ.
(5) ํฉ๋ณ ์ ๋ ฌ - ์ฑ๋ฅ๊ณผ ํน์ง
- Merge() ํจ์์ ์ํ์๊ฐ์ ๋ ๋ถ๋ถ๋ฐฐ์ด B[], C[] ๊ฐ์ ๋น๊ต ํ์์ด๊ธฐ ๋๋ฌธ์ ์ต์ n/2 ๋ฒ ์ด๋ฉฐ, ๋ง์์ผ n - 1 ๋ฒ ๋น๊ต๋ฅผํ๊ฒ ๋จ.
- ์ฆ, Merge() ํจ์๋ ์ต์ ๊ณผ ์ต์
๋ ๋ค n์ ์๊ฐ๋ณต์ก๋๋ฅผ ๊ฐ์ง๊ธฐ ๋๋ฌธ์ θ(n) ์ ์๊ฐ๋ณต์ก๋๋ฅผ ๊ฐ์ง ์ ์์.
- ์ํ ์๊ณ ๋ฆฌ์ฆ์ ์ฑ๋ฅ์ ์ ํ์์ผ๋ก ํํ์ ํ๊ธฐ ๋๋ฌธ์, ๋ฐ์ดํฐ n๊ฐ๋ฅผ ์ ๋ ฌํ๋๋ฐ ๊ฑธ๋ฆฌ๋ ์๊ฐ์ T(n) ์ผ๋ก ๋๊ณ ๋ณด์์ ๋, ์ผ์ชฝ ์ ๋ฐ n/2 ๊ฐ๋ฅผ ํฉ๋ณ ์ ๋ ฌํ๋๋ฐ ๊ฑธ๋ฆฌ๋ ์๊ฐ์ด๋ฏ๋ก, T(n/2) ๋ก ๋ณด๊ณ ์ค๋ฅธ์ชฝ๋ ๋ง์ฐฌ๊ฐ์ง๋ก ์ ๋ฐ n/2 ๊ฐ๋ฅผ ํฉ๋ณ ์ ๋ ฌํ๋๋ฐ ๊ฑธ๋ฆฌ๋ ์๊ฐ์ด๋ฏ๋ก, T(n/2) ๋ก ๋ณผ ์ ์์.
- ๋ํ, Merge() ํจ์๋ θ(n) ์ ์๊ฐ๋ณต์ก๋๋ฅผ ๊ฐ์ง๋ฏ๋ก, ๊ฒฐ๋ก ์ T(n) = 2T(n/2) + θ(n) ์ผ๋ก ๋ณผ ์ ์์.
- ** ๊ฒฐ๋ก ์ T(n) = O(nlogn) ์ด ๋๊ฒ ๋จ. **
- ์์ ์ ์ธ ์ ๋ ฌ ์๊ณ ๋ฆฌ์ฆ: ํฉ๋ณ ๊ณผ์ ์์ ๋์ผํ ๋ ๋ฐ์ดํฐ๊ฐ ์์ ๋ ํญ์ ์ผ์ชฝ ๋ฐ์ดํฐ๋ฅผ ๋จผ์ ์ ํํด ์ ๋ ฌํ๊ธฐ ๋๋ฌธ์.
- ์ ์๋ฆฌ ์ ๋ ฌ ์๊ณ ๋ฆฌ์ฆ์ด ์๋: ์ผ์ชฝ ๋ถ๋ถ๋ฐฐ์ด๊ณผ ์ค๋ฅธ์ชฝ ๋ถ๋ถ๋ฐฐ์ด์ ์ ๋ ฌํ๊ธฐ ์ํด์ ๊ฒฐ๊ณผ ๋ฐฐ์ด์ ๋ง๋ค์ด์ ๋ฐ์ดํฐ๋ฅผ ์ฝ์
ํ๊ธฐ ๋๋ฌธ์ ์
๋ ฅ ํฌ๊ธฐ n๋งํผ์ ์ถ๊ฐ์ ์ธ ์ ์ฅ๊ณต๊ฐ์ ์๊ตฌํ๊ฒ ๋จ.
- ์ ํ์ ์ธ ๋ถํ ์ ๋ณต ๋ฐฉ๋ฒ์ด ์ ์ฉ๋จ: ๋ถํ , ์ ๋ณต, ๊ฒนํฉ์ ๊ณผ์ ์ ๋ชจ๋ ๊ฑฐ์น๊ธฐ ๋๋ฌธ์.
(6) ํฉ๋ณ ์ ๋ ฌ - ๋น์ํ์ ๋ฐฉ์์ ํฉ๋ณ ์ ๋ ฌ
- ๋ฐ๋์ ์ํ ์๊ณ ๋ฆฌ์ฆ์ ์ฌ์ฉํ์ง ์๊ณ ๋, ๋ฐ๋ณต๋ฌธ์ ํตํด์ ํฉ๋ณ ์ ๋ ฌ ์๊ณ ๋ฆฌ์ฆ์ ๊ตฌํ ํ ์ ์์.
- ๋ถํ ๊ณผ์ ์ ๊ฑฐ์น์ง ์๊ณ , ํฉ๋ณ๋ง์ผ๋ก๋ ๊ฐ๋ฅํ๊ธดํ๋ค๋ ๋ง์.