์๊ณ ๋ฆฌ์ฆ [Algorithm] - ๊ณ์ ์ ๋ ฌ Counting Sort (7) (C, Python) ๊ณ์ ์ ๋ ฌ ์ด๋ฒ์๋ ๊ณ์ ์ ๋ ฌ์ ๋ํด ์์๋ณด์. ๊ณ์ ์ ๋ ฌ์ด๋ ๋จ์ํ๊ฒ 'ํฌ๊ธฐ๋ฅผ ๊ธฐ์ค์ผ๋ก ์ธ๋ ์๊ณ ๋ฆฌ์ฆ'์ด๋ค. ํ์ง๋ง ๊ณ์ ์ ๋ ฌ์ '๋ฒ์์กฐ๊ฑด'์ด ์๋ ๊ฒฝ์ฐ์ ํํด์ ๊ต์ฅํ ๋น ๋ฅธ ์๊ณ ๋ฆฌ์ฆ์ด๋ค. ์ง๊ธ๊น์ง ์ ํ ์ ๋ ฌ, ๋ฒ๋ธ ์ ๋ ฌ, ์ฝ์ ์ ๋ ฌ, ํต ์ ๋ ฌ, ๋ณํฉ ์ ๋ ฌ, ํ ์ ๋ ฌ์ ๋ฐฐ์ ๋๋ฐ ์ง๊ธ ๊น์ง ๋ฐฐ์ด ์ ๋ ฌ ์ค ๊ฐ์ฅ ๋น ๋ฅธ ์ ๋ ฌ๋ฐฉ๋ฒ์ ๊ณ ๋ฅด๋ผ๋ฉด ์๊ฐ ๋ณต์ก๋ O(N*log N)์ ๊ฐ์ง๋ ํต ์ ๋ ฌ, ๋ณํฉ ์ ๋ ฌ, ํ ์ ๋ ฌ ์ค ํ๋๋ฅผ ๊ณ ๋ฅผ ๊ฒ์ด๋ค. ํ์ง๋ง ์ด๋ณด๋ค ๋ ๋น ๋ฅด๊ฒ ์ ๋ ฌํด์ผ ํ๋ค๋ฉด ์ด๋ป๊ฒ ํด์ผ๋ ๊น? ๊ณ์ ์ ๋ ฌ์ ๋ฒ์๊ฐ ์ฃผ์ด์ ธ์๋ค๋ฉด ์๊ฐ๋ณต์ก๋ O(N)์ ์๋๋ก ์ ๋ ฌ์ ์ํํ๋ค. ํฌ๊ธฐ๋ฅผ ๊ธฐ์ค์ผ๋ก ๊ฐฏ์๋ฅผ ์ธ๊ณ , ๊ฐฏ์๋งํผ ์ถ๋ ฅํด์ฃผ๋ฉด ์ ๋ ฌ์ด ์ด๋ฃจ์ด์ง๊ธฐ ๋๋ฌธ์ ๊ต์ฅํ ๋น ๋ฅด๋ค. ๋ค์์ 5 ์ดํ ์์ฐ์ ๋ฐ์ดํฐ๋ฅผ ์ค๋ฆ์ฐจ์ ์ ๋ ฌํ์ธ.. ์๊ณ ๋ฆฌ์ฆ [Algorithm] - ํ ์ ๋ ฌ Heap Sort(6) (C,Python) ํ์ ๋ ฌ ์ด๋ฒ์๋ ํ ์ ๋ ฌ์ ๋ํด ์์๋ณด์. ํ์ ๋ ฌ์ด๋ ํํธ๋ฆฌ ๊ตฌ์กฐ๋ฅผ ์ด์ฉํ๋ ์ ๋ ฌ๋ฐฉ๋ฒ์ด๋ค. ์ด๋ฅผ ์ดํดํ๊ธฐ ์ํด์ ๋จผ์ ํ(Heap)๊ตฌ์กฐ๋ฅผ ์์์ผํ๊ณ , ํ์ ์๊ธฐ ์ด์ ์๋ ์ด์ง ํธ๋ฆฌ(Binary Tree)์ ๋ํด ์์์ผ ํ๋ค. ์ด์ง ํธ๋ฆฌ(binary tree)๋ ๊ฐ๊ฐ์ ๋ ธ๋๊ฐ ์ต๋ ๋ ๊ฐ์ ์์ ๋ ธ๋๋ฅผ ๊ฐ์ง๋ ํธ๋ฆฌ ์๋ฃ๊ตฌ์กฐ๋ก, ์์ ๋ ธ๋๋ฅผ ๊ฐ๊ฐ ์ผ์ชฝ์์ ๋ ธํธ์ ์ค๋ฅธ์ชฝ ์์ ๋ ธ๋ ๋ผ๊ณ ํ๋ค. (์ถ์ฒ : https://ko.wikipedia.org/wiki/%EC%9D%B4%EC%A7%84_%ED%8A%B8%EB%A6%AC) ์์ ์ด์งํธ๋ฆฌ๋ ๋ฐ์ดํฐ๊ฐ ๋ฃจํธ(Root) ๋ ธ๋๋ถํฐ ์์ํด์ ์์๋ ธ๋๊ฐ ์ผ์ชฝ ์์๋ ธ๋, ์ค๋ฅธ์ชฝ ์์ ๋ ธ๋๋ก ์ฐจ๊ทผ์ฐจ๊ทผ ๋ค์ด๊ฐ๋ ๊ตฌ์กฐ์ ์ด์ง ํธ๋ฆฌ์ด๋ค. ์ฆ ์์ ์ด์งํธ๋ฆฌ๋ ์ด์งํธ๋ฆฌ์ ๋ ธ๋๊ฐ ์ค.. ์๊ณ ๋ฆฌ์ฆ [Algorithm] - ๋ณํฉ ์ ๋ ฌ Merge Sort(5) (C,Python) ๋ณํฉ์ ๋ ฌ ์ด๋ฒ์๋ ๋ณํฉ ์ ๋ ฌ์ ๋ํด ์์๋ณด์. ๋ณํฉ์ ๋ ฌ๋ ํต์ ๋ ฌ๊ณผ ๋ง์ฐฌ๊ฐ์ง๋ก ๋ํ์ ์ธ '๋ถํ ์ ๋ณต' ๋ฐฉ๋ฒ์ ์ฑํํ ์๊ณ ๋ฆฌ์ฆ์ด๋ค. ๋ฐ๋ผ์ ๊ฒฐ๊ณผ์ ์ผ๋ก ํต ์ ๋ ฌ๊ณผ ๋์ผํ๊ฒ O(N * logN)์ ์๊ฐ ๋ณต์ก๋๋ฅผ ๊ฐ์ง๋ค. ๋ค๋ง ํต ์ ๋ ฌ์ ์ต์ ์ ๊ฒฝ์ฐ O(N^2)์ ์๊ฐ๋ณต์ก๋๋ฅผ ๊ฐ์ง์ง๋ง, ๋ณํฉ์ ๋ ฌ์ ์ ํํ ๋ฐ์ ์ฉ ๋๋๋ค๋ ์ ์์ ์ต์ ์ ๊ฒฝ์ฐ์๋ O(N*logN)์ ๋ณด์ฅํ๋ค. ๋ค์์ ์ซ์๋ค์ ์ค๋ฆ์ฐจ์์ผ๋ก ์ ๋ ฌํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์ธ์. 7 6 5 8 3 5 9 1 ๋ณํฉ์ ๋ ฌ์ ํ๋์ ํฐ ๋ฌธ์ ๋ฅผ ๋๊ฐ์ ์์ ๋ฌธ์ ๋ก ๋ถํ ํ ๋ค์ ๊ฐ์ ๊ณ์ฐํ๊ณ ๋์ค์ ํฉ์น๋ ๋ฐฉ๋ฒ์ ์ฑํํ๋ค. ์ฆ ๊ธฐ๋ณธ ์์ด๋์ด๋ ์ผ๋จ ์ ํํ ๋ฐ์ผ๋ก ๋๋๊ณ ๋์ค์ ์ ๋ ฌํ๋ ๊ฒ์ด๋ค. ํต ์ ๋ ฌ๊ณผ ๋ค๋ฅด๊ฒ ํผ๋ฒ ๊ฐ์ด ์๊ณ ํญ์ ๋ฐ์ผ๋ก ๋๋๋ค๋ ํน์ง์ด ์๊ณ , ๋๋ฌธ์ ๋จ.. ์๊ณ ๋ฆฌ์ฆ [Algorithm] - ํต ์ ๋ ฌ (4) (C, Python) ํต ์ ๋ ฌ ์ด๋ฒ์๋ ํต ์ ๋ ฌ์ ๋ํด ์์๋ณด์. ํต ์ ๋ ฌ์ด๋ ๋ํ์ ์ธ '๋ถํ ์ ๋ณต'์๊ณ ๋ฆฌ์ฆ์ผ๋ก ํ๊ท ์๋๊ฐ O(N*logN)์ธ ์๊ณ ๋ฆฌ์ฆ์ด๋ค. ์ด์ ์ ๋ฐฐ์ ๋ ์ ํ ์ ๋ ฌ, ๋ฒ๋ธ ์ ๋ ฌ, ์ฝ์ ์ ๋ ฌ ์๊ณ ๋ฆฌ์ฆ์ ๋ฐ์ดํฐ์ ๊ฐฏ์๊ฐ 10๋ง๊ฐ๊ฐ ๋์ด๊ฐ๋ฉด ์ฌ์ฉํ๊ธฐ ๋งค์ฐ ์ด๋ ค์ด ์๊ณ ๋ฆฌ์ฆ์ด๋ค. ๋ฐ๋ผ์ ๋์ฑ ๋น ๋ฅธ ์ ๋ ฌ ์๊ณ ๋ฆฌ์ฆ์ด ํ์ํ๊ณ ๋ํ์ ์ธ ์๊ณ ๋ฆฌ์ฆ์ด ํต ์ ๋ ฌ ์๊ณ ๋ฆฌ์ฆ์ด๋ค. ๋ค์์ ์ซ์๋ค์ ์ค๋ฆ์ฐจ์์ผ๋ก ์ ๋ ฌํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์ธ์. 1 10 5 8 7 6 4 3 2 9 ํต ์ ๋ ฌ์ ํ๋์ ํฐ ๋ฌธ์ ๋ฅผ ๋๊ฐ์ ์์ ๋ฌธ์ ๋ก ๋ถํ ํ๋ ์์ผ๋ก ์ ๋ ฌํ๋ค. ๋ค์ ๋งํด ํน์ ํ ๊ฐ์ ๊ธฐ์ค์ผ๋ก ํฐ ์ซ์์ ์์ ์ซ์๋ฅผ ์๋ก ๊ตํํ ๋ค์ ๋ฐฐ์ด์ ๋ฐ์ผ๋ก ๋๋๋ค. ์์๋ฅผ ํตํด ๋ณด์. ํต ์ ๋ ฌ์๋ ๊ธฐ์ค ๊ฐ์ด ์ฌ์ฉ๋๋ค. ์ด๋ฅผ ํผ๋ฒ(Pivot)์ด๋ผ๊ณ ๋ ํ.. ์ด์ 1 2 ๋ค์