๐ง Non-Comparison Sort
์ด์ ๊ธ์์ Comparison Based Sort๋ Lower Bound๊ฐ Ω(n log n)์ด๋ผ๋ ๊ฒ์ ์ดํด๋ณด์์ต๋๋ค.
์ด๋ฒ์ ์ดํด๋ณผ ์๊ณ ๋ฆฌ์ฆ์ ์๊ฐ ๋ณต์ก๋๊ฐ O(n)์ธ ์ ๋ ฌ ์๊ณ ๋ฆฌ์ฆ์ ๋๋ค.
์ด๋ Comparison Based Sort๊ฐ ์๋๊ธฐ ๋๋ฌธ์ ์ด์ ์ ๊ตฌํ Lower Bound๋ ์๋ชป๋์ง ์์์์ ๋ฏธ๋ฆฌ ๋ฐํ๊ณ ๋์ด๊ฐ๊ฒ ์ต๋๋ค.
๐ง Counting Sort (๊ณ์ ์ ๋ ฌ)
์ฐ์ ๋ฐฐ์ด A[0, ..., n]๋ฅผ 1๋ถํฐ k ์ฌ์ด์ ์ ์ ๋ฐฐ์ด์ด๋ผ ํ๊ฒ ์ต๋๋ค.
๊ณ์ ์ ๋ ฌ์ ๋ค์๊ณผ ๊ฐ์ด ์ด๋ฃจ์ด์ง๋๋ค.
ํฌ๊ธฐ๊ฐ k์ธ Counter ๋ฐฐ์ด C[0, 1, 2, ..., k]๋ฅผ ์ ์ํฉ๋๋ค.
ํด๋น ๊ฐ๋ค์ ๋ชจ๋ 0์ผ๋ก ์ด๊ธฐํํฉ๋๋ค.
A[0]๋ถํฐ A[n]๊น์ง ์ฝ์ผ๋ฉด์ $0 \leq i \leq n$ ์ ๋ํ์ฌ C[A[i]]์ ๊ฐ์ 1 ์ฆ๊ฐ์์ผ์ค๋๋ค.
C[0]๋ถํฐ C[k]๊น์ง ์ผ์ชฝ์์ ์ค๋ฅธ์ชฝ์ผ๋ก ์ฝ์ผ๋ฉด์ $1 < i \leq k$ ์ ๋ํ์ฌ C[i] = C[i] + C[i-1]๋ก ์์ ํด ์ค๋๋ค.
์ ๊ณผ์ ์ ํตํด C[i]๋ i๋ณด๋ค ์๊ฑฐ๋ ๊ฐ์ ์์์ ๊ฐ์๊ฐ ์ ์ฅ๋ฉ๋๋ค.
์์ ๋ฐฐ์ด B๋ฅผ ์์ฑํ ์ดํ A๋ฅผ ์ค๋ฅธ์ชฝ์์ ์ผ์ชฝ์ผ๋ก ์ฝ์ผ๋ฉด์ $1 \leq j \leq n$ ์ ๋ํ์ฌ A[j]๋ฅผ B[C[A[j]]]์ ๋ฃ์ด ์ฃผ๊ณ , C[A[j]]์ ๊ฐ์ 1 ๋ฎ์ถฐ์ค๋๋ค.
์ ๊ณผ์ ์ด ๋๋๋ฉด B๊ฐ ์ ๋ ฌ๋ ๋ฐฐ์ด์ด ๋ฉ๋๋ค.
์๋ฅผ ๋ค์ด ๊ธธ์ด๊ฐ 8์ด๊ณ ์ต๋๊ฐ์ด 6์ธ ๋ฐฐ์ด A์ ๋ํ์ฌ ๊ณ์ ์ ๋ ฌ์ ์งํํด ๋ณด๊ฒ ์ต๋๋ค.
๋ฐฐ์ด A๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
์ด๋ฅผ ํตํด ๋ฐฐ์ด C๋ฅผ ์์ฑํด ๋ณด๊ฒ ์ต๋๋ค.
์ด์ ํด๋น C์ ๋ํด์ ์ผ์ชฝ์์ ์ค๋ฅธ์ชฝ์ผ๋ก ์ฝ์ด๊ฐ๋ฉฐ C๋ฅผ ์ ๋ฐ์ดํธ ํด์ฃผ๊ฒ ์ต๋๋ค.
์์ ๋ฐฐ์ด B๋ฅผ ๋ง๋ค๊ณ , A์ ์ค๋ฅธ์ชฝ๋ถํฐ ์ผ์ชฝ์ผ๋ก ์ฝ์ด๊ฐ๋ฉฐ B๋ฅผ ์ฑ์ฐ๊ฒ ์ต๋๋ค.
ํด๋น ๊ณผ์ ์ ๋ฐ๋ณตํ๋ฉด, ์ต์ข ๊ฒฐ๊ณผ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
๐ง ์๋ ์ฝ๋
๐ง ์๊ฐ ๋ณต์ก๋
n์ ๋ฐฐ์ด์ ๊ธธ์ด์ด๋ฉฐ, k๋ ๋ฐฐ์ด์ ์ต๋๊ฐ์ ์๋ฏธํฉ๋๋ค.
์ด 4๋ฒ์ ์ต๋ ํฌ๊ธฐ๊ฐ max(n, k)์ธ linear loop๋ฅผ ์ํํ๋ฏ๋ก, O(n+k) ์ ๋๋ค.
๋ฐ๋ผ์ k = O(n) ์ด๋ผ๋ ๊ฐ์ ํ์์ ์ด ์ํ ์๊ฐ์ O(n)์ด ๋ฉ๋๋ค.
'๐ฅ Computer Science > ์๊ณ ๋ฆฌ์ฆ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[์๊ณ ๋ฆฌ์ฆ] P์ NP (1) | 2022.12.06 |
---|---|
[์๊ณ ๋ฆฌ์ฆ] Reduction (0) | 2022.12.05 |
[์๊ณ ๋ฆฌ์ฆ] Adversary Argument (2) | 2022.12.05 |
[์๊ณ ๋ฆฌ์ฆ] DP(4) - ํ๋ก์ด๋ ์์ฌ(Floyd Warshall) ์๊ณ ๋ฆฌ์ฆ (0) | 2022.11.13 |
[์๊ณ ๋ฆฌ์ฆ] DP (3) - ๋ฒจ๋งํฌ๋(Bellman-Ford) ์๊ณ ๋ฆฌ์ฆ (0) | 2022.11.12 |