Merge Sort - accidentlywoo/legacyVue GitHub Wiki
Merge Sort
Space - Complexity = ์ ๋ ฅ ๋ฐฐ์ด ํฌ๊ธฐ์ ๋ณด์กฐ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ฌ์ฉํ๋ค. Time - Complexity = O(n log n)
์๋ฆฌ
๊ธฐ๋ณธ์ ์ธ ๊ฐ๋ ์ผ๋ก๋ n๊ฐ์ ์์๋ฅผ ๊ฐ์ง ๋ฐฐ์ด์ ์ ๋ ฌํ ๋, ์ ๋ ฌํ๊ณ ์ ํ๋ ๋ฐฐ์ด์ ํฌ๊ธฐ๋ฅผ ์์ ๋จ์๋ก ๋๋์ค ์ ๋ ฌํ๊ณ ์ ํ๋ ๋ฐฐ์ด์ ํฌ๊ธฐ๋ฅผ ์ค์ด๋ ์๋ฆฌ๋ฅผ ์ฌ์ฉํ๋ค. Divide and conquer๋ผ๋, ๋ถํ ํ์ฌ ์ ๋ณตํ๋ค์ ์๋ฆฌ์ธ ๊ฒ์ด๋ค. ๋ง ๊ทธ๋๋ก ๋ณต์กํ ๋ฌธ์ ๋ฅผ ๋ณต์กํ์ง ์์ ๋ฌธ์ ๋ก ๋ถํ ํ์ฌ ์ ๋ณตํ๋ ๋ฐฉ๋ฒ์ด๋ค. ๋จ ๋ถํ (divide)ํด์ ์ ๋ณตํ์ผ๋ ์ ๋ณต(conquer)ํ ํ์๋ ๊ฒฐํฉ(combine)์ ๊ณผ์ ์ ๊ฑฐ์ณ์ผ ํ๋ค.
Merge Sort๋ ๋ ์ด์ ๋๋์ด์ง์ง ์์ ๋ ๊น์ง ๋ฐ ์ฉ(1/2) ๋ถํ ํ๋ค๊ฐ ๋ ์ด์ ๋๋์ด์ง์ง ์์ ๊ฒฝ์ฐ์๋( ์์ ํ๋์ธ ๋ฐฐ์ด์ผ ๋๊ฐ ๋๊ฒ ๋ค.) ์๊ธฐ ์์ , ์ฆ ์์ ํ๋๋ฅผ ๋ฐํํ๋ค. ์์๊ฐ ํ๋์ธ ๊ฒฝ์ฐ์๋ ์ ๋ ฌํ ํ์๊ฐ ์๊ธฐ ๋๋ฌธ์ด๋ค. ์ด ๋ ๋ฐํํ ๊ฐ๋ผ๋ฆฌ combine๋ ๋, ๋น๊ต๊ฐ ์ด๋ฃจ์ด์ง๋ฉฐ, ๋น๊ต ๊ฒฐ๊ณผ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์ ๋ ฌ๋์ด ์์ ๋ฐฐ์ด์ ์ ์ฅ๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ด ์์ ๋ฐฐ์ด์ ์ ์ฅ๋ ์์๋ฅผ ํฉ์ณ์ง ๊ฐ์ผ๋ก ๋ฐํํ๋ค. ์ค์ ์ ๋ ฌ์ ๋๋ ๊ฒ์ ๋ณํฉํ๋ ๊ณผ์ ์์ ์ด๋ค์ง๋ ๊ฒ์ด๋ค.
๊ฒฐ๊ตญ ํ๋์ฉ ๋จ์ ๋๊น์ง ๋ถํ ํ๋ ๊ฒ์ด๋ฉด, ๋ฐ๋ก ํ๋์ฉ ๋ถํ ํด๋ฒ๋ฆฌ๋ฉด ๋์ง ์์๊น? ์ฌ๊ท์ ์ผ๋ก ์ ๋ ฌํ๋ ์๋ฆฌ์ธ ๊ฒ์ด๋ค. ์ฌ๊ท์ ๊ตฌํ์ ์ํด 1/2์ฉ ๋ถํ ํ๋ค.