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์”ฉ ๋ถ„ํ• ํ•œ๋‹ค.