[c++] ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๊ฐœ๋…๊ณต๋ถ€ :: ์ •๋ ฌ (ํ€ต ์ •๋ ฌ, ํ•ฉ๋ณ‘ ์ •๋ ฌ)
์ปดํ“จํ„ฐ๊ณผํ•™ (CS)/Algorithm 2020. 8. 25. 22:16

ํ€ต ์ •๋ ฌ ๊ฐœ๋… ํ€ต ์ •๋ ฌ์˜ ์„ธ๋ถ€๊ณผ์ •์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค. pivot์ด๋ผ๋Š” ์š”์†Œ๋ฅผ ์„ ํƒํ•œ ํ›„, pivot์„ ๊ธฐ์ค€์œผ๋กœ ์™ผ์ชฝ์—๋Š” pivot๋ณด๋‹ค ์ž‘์€ ์š”์†Œ๋“ค์„ ๋†“๊ณ  ์˜ค๋ฅธ์ชฝ์—๋Š” pivot๋ณด๋‹ค ํฐ ์š”์†Œ๋“ค์„ ๋†“๋Š”๋‹ค. ์ดํ›„ ์ˆœํ™˜ํ˜ธ์ถœ์„ ์ด์šฉํ•˜์—ฌ ์žฌ๊ท€์ ์œผ๋กœ ์™ผ์ชฝ, ์˜ค๋ฅธ์ชฝ์œผ๋กœ ๋ถ„๋ฅ˜ํ•ด๋‘” ์š”์†Œ๋“ค์— ๋Œ€ํ•ด ์ „๊ณผ ๊ฐ™์€ ๊ณผ์ •์„ ๋ฐ˜๋ณตํ•œ๋‹ค. ์œ„์˜ ๊ทธ๋ฆผ์€ ์˜ค๋ฅธ์ชฝ ์š”์†Œ๋“ค์— ๋Œ€ํ•ด ์ˆœํ™˜ํ˜ธ์ถœํ•œ ๋ชจ์Šต์ด๋‹ค. ๋ถ„ํ• ์ด ๋ถˆ๊ฐ€๋Šฅํ•  ๋•Œ๊นŒ์ง€ ๋ฐ˜๋ณตํ•˜๋‹ค๋ณด๋ฉด ์ตœ์†Œํ•œ์˜ ์š”์†Œ๋กœ ๋‚˜๋ˆ„์–ด์ง€๊ณ  ์ดํ›„ ์ˆœ์„œ๋Œ€๋กœ ๊ฒฐํ•ฉ์„ ์ง„ํ–‰ํ•œ๋‹ค. ์œ„์˜ ๊ทธ๋ฆผ์—์„œ ์ƒ‰์ด ์น ํ•ด์ ธ์žˆ๋Š” ์š”์†Œ๋“ค์„ ์ˆœ์„œ๋Œ€๋กœ ํ•ฉ์น˜๋ฉด ๋œ๋‹ค. ํ€ต ์ •๋ ฌ์€ ๋ถ„ํ•  ์ •๋ณต ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ค‘ ํ•˜๋‚˜์ด๋‹ค. pivot์œผ๋กœ 2๊ฐœ์˜ ๋ถ€๋ถ„ ๋ฐฐ์—ด์„ ์ƒ์„ฑํ•˜๋Š” ๋ถ„ํ• (Divide) ๊ณผ์ •๊ณผ ๋ถ€๋ถ„ ๋ฐฐ์—ด์„ ์žฌ๊ท€์ ์œผ๋กœ ํ˜ธ์ถœํ•˜๋Š” ์ •๋ณต(Conquer) ๊ณผ์ •๊ณผ ์ •๋ ฌ๋œ ๋ถ€๋ถ„ ๋ฐฐ์—ด์„ ํ•ฉ..