Merge Sort Algorithm
ํฉ๋ณ ์ ๋ ฌ(Merge Sort)์ด๋? ๋ถํ ์ ๋ณต ์๊ณ ๋ฆฌ์ฆ(=Divide and conquer algorithm ์ฆ, ๊ทธ๋๋ก ํด๊ฒฐํ ์ ์๋ ๋ฌธ์ ๋ฅผ ์์ ๋ฌธ์ ๋ก ๋ถํ ํ์ฌ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ๋ฐฉ๋ฒ์ด๋ ์๊ณ ๋ฆฌ์ฆ์ ๋๋ค.)์ ํ๋๋ก O(n log n)์ ์๊ฐ ๋ณต์ก๋๋ฅผ ๊ฐ์ง๊ณ ์์ต๋๋ค. ํฉ๋ณ ์ ๋ ฌ์ ์๋ ์๊ณ ๋ฆฌ์ฆ์ ์๋์ ๊ฐ์ต๋๋ค. ๋ฆฌ์คํธ์ ๊ธธ์ด๊ฐ 1 ์ดํ์ด๋ฉด ์ด๋ฏธ ์ ๋ ฌ๋ ๊ฒ์ผ๋ก ๋ณธ๋ค. ๊ทธ๋ ์ง ์์ ๊ฒฝ์ฐ์๋ ๋ถํ (divide) : ์ ๋ ฌ๋์ง ์์ ๋ฆฌ์คํธ๋ฅผ ์ ๋ฐ์ผ๋ก ์๋ผ ๋น์ทํ ํฌ๊ธฐ์ ๋ ๋ถ๋ถ ๋ฆฌ์คํธ๋ก ๋๋๋ค. ์ ๋ณต(conquer) : ๊ฐ ๋ถ๋ถ ๋ฆฌ์คํธ๋ฅผ ์ฌ๊ท์ ์ผ๋ก ํฉ๋ณ ์ ๋ ฌ์ ์ด์ฉํด ์ ๋ ฌํ๋ค. ๊ฒฐํฉ(combine) : ๋ ๋ถ๋ถ ๋ฆฌ์คํธ๋ฅผ ๋ค์ ํ๋์ ์ ๋ ฌ๋ ๋ฆฌ์คํธ๋ก ํฉ๋ณํ๋ค. ์ด๋ ์ ๋ ฌ ๊ฒฐ๊ณผ๊ฐ ์์๋ฐฐ์ด์ ์ ์ฅ๋๋ค. ๋ณต์ฌ(copy) : ์์ ๋ฐฐ์ด์ ์ ์ฅ๋ ๊ฒฐ๊ณผ๋ฅผ ์๋ ๋ฐฐ์ด์ ๋ณต์ฌํ๋ค. ์ดํด๊ฐ ์ ์๊ฐ๋ค๋ฉด ์๋ ์ ๋๋ฉ์ด์ ์ ํตํด ์๋ ์๋ฆฌ๋ฅผ ์ฝ๊ฒ ์ดํดํ ์ ์์ต๋๋ค. ...