์ธ๋ถ ์ ๋ ฌ(External Sort)์ด๋?
๋ฐ์ดํฐ๋ค์ ํฌ๊ธฐ๊ฐ ์ฃผ๊ธฐ์ต์ฅ์น๋ณด๋ค ์ปค ์ ๋ ฌ ํ ๋ฐ์ดํฐ๋ค์ ์ฃผ๊ธฐ์ต์ฅ์น์ ์จ์ ํ ์ ๋ ฅํ ์ ์๋ ๊ฒฝ์ฐ ์ฌ์ฉ๋๋ ์ ๋ ฌ ๋ฐฉ๋ฒ์ ์๋ฏธํ๋ค. ์๋ฅผ ๋ค์ด ์ฃผ๊ธฐ์ต์ฅ์น๊ฐ 1GB๊ณ , ๋ฐ์ดํฐ ํ์ผ์ด ์ด 100GB๋ผ๊ณ ํ์ ๋ ๋ด๋ถ ์ ๋ ฌ ์๊ณ ๋ฆฌ์ฆ์ ์ฌ์ฉํ์ฌ ์ ๋ ฌํ ์ ์๋ค.
์ธ๋ถ ์ ๋ ฌ ๊ณผ์
๋ถํ
์ธ๋ถ ์ ๋ ฌ์ ์ฃผ๊ธฐ์ต์ฅ์น์์ ์์ฉํ ์ ์๋ ๋ฐ์ดํฐ์ ๋ํด์๋ง ์ฝ์ด, ๋ด๋ถ์ ๋ ฌ์ ์ํ ๊ทธ ๊ฒฐ๊ณผ๋ฅผ ๋ณด์กฐ ๊ธฐ์ต ์ฅ์น์ ๋ค์ ์ ์ฅํ๋ค. ์ฌ๊ธฐ์ ๋ด๋ถ ์ ๋ ฌ์ ์ํฉ์ ๋ง๋ ์ ๋ ฌ์ ์ฌ์ฉํ๋ฉด ๋๋ค.
1. ๋ฉ๋ชจ๋ฆฌ ๋งํผ ๋ฐ์ดํฐ๋ฅผ ์ฝ์ด์จ๋ค.
2. ํ์ฉํ ๋ด๋ถ ์ ๋ ฌ์ ์ด์ฉํ์ฌ ๋ฐ์ดํฐ๋ฅผ ์ ๋ ฌํ๋ค.
3. ์ ๋ ฌ๋ ๋ฐ์ดํฐ๋ฅผ ๋ณด์กฐ ๊ธฐ์ต ์ฅ์น์ ๊ธฐ๋กํ๋ค.
์ ๋ณต
์ ๋ ฌ๋์ด ๋๋ ์ง ๋ธ๋ก๋ค์ ํ๋์ ๋ธ๋ก์ผ๋ก ๋ง๋ค๊ธฐ ์ํด Merge ์ ์ฐจ๋ฅผ ๋ฐ๋ณต ์ํํด์ผ ํ๋ค. ์ฆ, ๋ธ๋ก๋ค์ ๋ถ๋ถ์ ์ผ๋ก ์ฃผ๊ธฐ์ต์ฅ์น์ ์ฝ์ด ๋ค์ฌ Merge๋ฅผ ์ํํ์ฌ ๋ณด์กฐ ๊ธฐ์ต ์ฅ์น์ ๋ค์ ์ ๋ ฅํ๋ ๊ณผ์ ์ ๋ฐ๋ณตํ๋ค. 2๊ฐ์ ๋ธ๋ก๋ค์ ๋ฌถ์ด ๋ฐ์ดํฐ๋ฅผ ์ผ๋ถ๋ถ ์ฝ์ด๋ค์ด๋ฉฐ ์ ๋ ฌ์ ์ํํ๋ค. 1GB์ ๋ธ๋ก์ 2๊ฐ์ฉ ์ง์ง์ด Merge ๊ณผ์ ์ ๋ฐ๋ณตํ๋ฉด 2GB์ ๋ธ๋ก๋ค์ด ๋ง๋ค์ด์ง๋ฉฐ, 2GB์ ๋ธ๋ก๋ค์ ์ง์ง์ด Mergeํ๋ ๊ณผ์ ์ ๋ฐ๋ณตํ๋ฉด 4GB์ ๋ธ๋ก๋ค์ด ๋ง๋ค์ด์ง๋ค. ์ด๋ฅผ ๋๊น์ง ๋ฐ๋ณตํ๋ฉด ๊ฒฐ๊ตญ ํ๋์ ๋ธ๋ก์ด ๋จ๊ฒ ๋๋ค.
while(๋ธ๋ก ์๊ฐ 1๊ฐ๊ฐ ๋ ๋๊น์ง ๋ฐ๋ณตํ๋ค.) {
1. 2๊ฐ์ ๋ธ๋ก์ ์ ํํ๋ค.
2. 2๊ฐ์ ๋ธ๋ก์์ ๋ฉ๋ชจ๋ฆฌ ํฌ๊ธฐ์ ๋ง๊ฒ ๋ฐ์ดํฐ๋ฅผ ์ฝ์ด์จ๋ค.
3. ์ฝ์ด์จ ๋ฐ์ดํฐ๋ค์ ๊ฐ๊ฐ ๋น๊ตํ๋ฉฐ ํฉ๋ณ ์ ๋ ฌ์ ์ ๋ณต ๊ณผ์ ๊ณผ ๋์ผํ๊ฒ ์งํํ์ฌ ๋ณด์กฐ ๊ธฐ์ต ์ฅ์น์ ๊ธฐ๋กํ๋ค.
4. 2๊ฐ์ ๋ธ๋ก์ ์กด์ฌํ๋ ๋ฐ์ดํฐ๊ฐ ์๋ฃ๋์ผ๋ฉด ๋ค์์ผ๋ก 2๊ฐ์ ๋ธ๋ก์ ์ ํํ๋ค. (๋ง์ฝ, ๋ธ๋ก์ด 1๊ฐ ๋จ์์ผ๋ฉด ๊ทธ ๋ธ๋ก์ ๊ทธ๋๋ก ๋ณด์กฐ๊ธฐ์ต์ฅ์น์ ๊ธฐ๋กํ๋ค.
}
๊ท ํ์ ๋ค๋ฐฉํฅ ํฉ๋ณ ์ ๋ ฌ
์์ ์์์ฒ๋ผ ์ธ๋ถ ์ ๋ ฌ ์๊ณ ๋ฆฌ์ฆ์ ํฉ๋ณ ์ ๋ ฌ์ ์์ฉ/๋ณํํ์ฌ ๋ง๋ค ์ ์๋ค. ์ด๋ฅผ ๊ท ํ์ ๋ค๋ฐฉํฅ ํฉ๋ณ ์ ๋ ฌ์ด๋ผ๊ณ ํ๋ค.
๋ณด์กฐ ๊ธฐ์ต ์ฅ์น ์ ๊ทผ ์๊ฐ
์ธ๋ถ ์ ๋ ฌ ์๊ณ ๋ฆฌ์ฆ์ ์ ๋ ฌ ์๊ฐ๋ณด๋ค๋ ์๋ฌด๋๋ ๋ณด์กฐ ๊ธฐ์ต ์ฅ์น์ ์ ๊ทผํ๋ ์๊ฐ์ ์ต์ํํ๋ ๊ฒ์ด ์ค์ํ๋ค. ์๋ํ๋ฉด ์ ๋ ฌ ๊ณผ์ ์์ ๋ณด์กฐ ๊ธฐ์ต ์ฅ์น์ ์ ๊ทผํ๋ ํ์๋ ๋ง๊ณ , ๋ณด์กฐ ๊ธฐ์ต ์ฅ์น ์ ๊ทผ ์๊ฐ(access time)์ด ๊ฐ์ฅ ์ค๋๊ฑธ๋ฆฌ๊ธฐ ๋๋ฌธ์ด๋ค.
REFERENCE
https://dudri63.github.io/2019/02/03/algo32/