๊ตญ๋ฏผ๋ํ๊ต์์ "์ฝ๊ฒ ๋ฐฐ์ฐ๋ ์๊ณ ๋ฆฌ์ฆ" ๊ต์ฌ๋ฅผ ์ด์ฉํ ๋ฐํ๋ช
๊ต์๋์ ๊ฐ์ ๊ต์์ ์ด์ฉํ์ฌ ์์
๋ด์ฉ์ ์ ๋ฆฌํ์์ต๋๋ค Heapsort Heapsort๋ ์ด๋ฆ ๊ทธ๋๋ก Heap ์๋ฃ๊ตฌ์กฐ๋ฅผ ํ์ฉํ๋ ์ ๋ ฌ ์๊ณ ๋ฆฌ์ฆ์ด๋ค! => Heap์ด๋ Heap Property๋ฅผ ๋ง์กฑํ๋ Complete Binary Tree์! (Complete Binary Tree๋ ๋
ธ๋๋ฅผ ์ฝ์
ํ ๋ ์ผ์ชฝ๋ถํฐ ์ฐจ๋ก๋๋ก ์ฝ์
ํ๋ ํธ๋ฆฌ = ์ผ์ชฝ์ด ๋น์ด์์ ์ ์์) Heap Property(Min-Heap์ ๊ฒฝ์ฐ) ๊ฐ ๋
ธ๋์ ๊ฐ (Max-Heap์ ๊ฒฝ์ฐ) ๊ฐ ๋
ธ๋์ ๊ฐ >= ์์ ๋
ธ๋์ ๊ฐ => Complete Binary Tree ์ด๋ฏ๋ก ์์ ๊ฐ์ด ๋ฐฐ์ด๋ก ๊ตฌํ์ด ๊ฐ๋ฅํจ! Heap Operations์ ๊ฒฝ์ฐ (n์ Heap์ ์ ์ฅ๋ ..
๊ตญ๋ฏผ๋ํ๊ต์์ "์ฝ๊ฒ ๋ฐฐ์ฐ๋ ์๊ณ ๋ฆฌ์ฆ" ๊ต์ฌ๋ฅผ ์ด์ฉํ ๋ฐํ๋ช
๊ต์๋์ ๊ฐ์ ๊ต์์ ์ด์ฉํ์ฌ ์์
๋ด์ฉ์ ์ ๋ฆฌํ์์ต๋๋ค Merge Sort ๋ถํ ์ ๋ณต(Divide and Conquer) ์ ๋ ฌ ์๊ณ ๋ฆฌ์ฆ์ => ์์ญ์ ๋๋ ์ ๊ฐ๊ฐ ์ ๋ ฌํ๊ณ ํฉ์น๋๊ฒ Key Idea(๋๋ ์์ญ์ ์ฌ๊ท์ ์ผ๋ก ์ ๋ ฌ) Merging Two Sub-array 2๊ฐ์ ํฌ์ธํฐ๋ฅผ ์ด์ฉํ๊ฒ ๋๋๋ฐ ์ ๊ณผ์ ์ ๋ฐ๋ณตํ์ฌ ๋๋ ์ง ๋ ๋ฐฐ์ด์ ํ๋๋ก ํฉ์น๋ค => ๋ Sub-array์ ์ต์๊ฐ์ ๋น๊ตํ๊ณ ๋ ์์๊ฐ์ ๋ณต์ฌํ๋ ๋ฐฉ์ ๊ฒฐ๊ตญ Merge๋ arr์ n๊ฐ๋งํผ์ ์ ๋ ฌํ์ฌ ๊ฐ์ ์ฑ์ฐ๊ฒ๋จ=> Θ(n) ๋งํผ ์ฐ์ฐ์ ํ์๋ก ํ๋ค๋ ๊ฒ์ ์ ์ ์์ Complexity Analysis of Merge Sort mergesort(arr, l, l..
๊ตญ๋ฏผ๋ํ๊ต์์ "์ฝ๊ฒ ๋ฐฐ์ฐ๋ ์๊ณ ๋ฆฌ์ฆ" ๊ต์ฌ๋ฅผ ์ด์ฉํ ๋ฐํ๋ช
๊ต์๋์ ๊ฐ์ ๊ต์์ ์ด์ฉํ์ฌ ์์
๋ด์ฉ์ ์ ๋ฆฌํ์์ต๋๋ค Sorting? ์ ๋ ฌ(Sorting) : ๋ฐฐ์ด ์์๋ค์ ๋ฒํธ ์, ์ํ๋ฒณ ์ ๋ฑ ์ ํด์ง ์์๋๋ก ์ฌ๋ฐฐ์นํ๋ ๋ฌธ์ 3 / 1 / 2 / 5 / 4 -> 1 / 2 / 3 / 4 / 5 Sorting Algorithms์๋ ํฌ๊ฒ ๊ธฐ๋ณธ์ ์ธ ์ ๋ ฌ ์๊ณ ๋ฆฌ์ฆํ๊ท ์๊ฐ๋ณต์ก๋๊ฐ Θ(n^2)์ธ ์๊ณ ๋ฆฌ์ฆ๋คSelection Sort, Insertion Sort, Bubble Sort๊ณ ๊ธ ์ ๋ ฌ ์๊ณ ๋ฆฌ์ฆํ๊ท ์๊ฐ๋ณต์ก๋๊ฐ Θ(nlogn)์ธ ์๊ณ ๋ฆฌ์ฆ๋คMerge Sort, Quicksort, Heapsortํน์ ์ ๋ ฌ ์๊ณ ๋ฆฌ์ฆํน์ํ ๊ฒฝ์ฐ ์๊ฐ๋ณต์ก๋๊ฐ Θ(n)์ธ ์๊ณ ๋ฆฌ์ฆ๋คRadix Sort, Counting S..
๊ตญ๋ฏผ๋ํ๊ต์์ "์ฝ๊ฒ ๋ฐฐ์ฐ๋ ์๊ณ ๋ฆฌ์ฆ" ๊ต์ฌ๋ฅผ ์ด์ฉํ ๋ฐํ๋ช
๊ต์๋์ ๊ฐ์ ๊ต์์ ์ด์ฉํ์ฌ ์์
๋ด์ฉ์ ์ ๋ฆฌํ์์ต๋๋ค Complexity of Recursive Functions Algorithm1 ์ ํฉํ ๋ฆฌ์ผ์ ์ฌ๊ท์ ์ผ๋ก ๋ํ๋ด๊ณ ์๊ณ Algorithm2 ๋ ํ์ ๋ฒ์๋ฅผ ๋ฐ์ผ๋ก ๋๋์ด ํด๋น ์ซ์๋ฅผ ํ์ํ๊ณ ์์ ๊ทธ๋ผ ๋ณต์ก๋๋ ์ด๋ป๊ฒ ๋ ๊น..? ๋ฐ๋ก ๋ณต์ก๋๋ฅผ ๊ตฌํ๊ธฐ๋ ํ๋ค๊ณ ์ฐ์ ๋ณต์ก๋ ํจ์์ ์ ํ์ (Recurrence Relation)์ ๊ตฌํด๋ณผ ์ ์์ => ์ด๋ ๋ณต์ก๋ ํจ์๋ฅผ ์ฌ๊ท์ ์ผ๋ก ์ ์ํ ์ Solving Recurrences ๋ณต์ก๋๋ฅผ ๊ตฌํ๊ณ ์ถ์๋ฐ ์ ํ์์ ๋ ์ด๋ป๊ฒ ํ ์ ์์๊น..? ์ ํ์์ ํผ๋ค = ์ ํ์์ ํด์์ ํด๋ก ๋ณํ => ํด์์ ํด(Closed solution) ๋..
๊ตญ๋ฏผ๋ํ๊ต์์ "์ฝ๊ฒ ๋ฐฐ์ฐ๋ ์๊ณ ๋ฆฌ์ฆ" ๊ต์ฌ๋ฅผ ์ด์ฉํ ๋ฐํ๋ช
๊ต์๋์ ๊ฐ์ ๊ต์์ ์ด์ฉํ์ฌ ์์
๋ด์ฉ์ ์ ๋ฆฌํ์์ต๋๋ค Algorithm Analysis ์๊ณ ๋ฆฌ์ฆ : ์ด๋ค ๋ฌธ์ (Problem)๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํ ์ ์ฐจ๋ ๋ฐฉ๋ฒ์ ๊ณต์ํํ ํํ๋ก ํํํ ๊ฒ => ์ฌ๊ธฐ์ ๋ฌธ์ ๋ ์
๋ ฅ(Input)๊ณผ ์ถ๋ ฅ(Output)์ ๊ด๊ณ ์ ๋ ฌ ๋ฌธ์ ๋ฅผ ์์๋ก ๋ดค์ ๋Input : ์ ๋ ฌ๋์ง ์์ ์ซ์๋ค์ ๋ชฉ๋กOutput : ์ค๋ฆ์ฐจ์์ผ๋ก ์ ๋ ฌ๋ ์ซ์๋ค์ ๋ชฉ๋ก ํ ๋ฌธ์ ๋ ๋ค์ํ ์๊ณ ๋ฆฌ์ฆ์ผ๋ก ํด๊ฒฐํ ์ ์์ Problem : n์ n๋ฒ ๋ํ ๊ฐ์? ๋๊ฐ๋ด๋ 3๋ฒ์ ์ฑํํ ํ
๋ฐ ๊ฐ์ฅ ํจ์จ์ ์ด๊ณ ์ฐ๊ธฐ ์ข์ ์๊ณ ๋ฆฌ์ฆ์ ์ ํํด์ผํ๊ณ ์ด๊ฒ์ ๊ณง ํจ์จ์ฑ๊ณผ ์ฉ์ด์ฑ์ด ์ข๋ค๋ ์๋ฏธ (์๊ณ ๋ฆฌ์ฆ์์๋ ํจ์จ์ฑ์ ์ฃผ๋ก ์ ๊ฒฝ์) ๊ทธ๋ผ ์๊ณ ๋ฆฌ์ฆ์ ํจ์จ์ฑ์ ์ด๋ป..
Do it! ์๊ณ ๋ฆฌ์ฆ ์ฝ๋ฉํ
์คํธ : ํ์ด์ฌ ์๊ฐ ๋ณต์ก๋์๊ฐ ๋ณต์ก๋๋ ์ฃผ์ด์ง ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํ ์ฐ์ฐ ํ์๋ฅผ ๋งํจ ํ์ด์ฌ์์๋ 2000๋ง ๋ฒ~1์ต ๋ฒ์ ์ฐ์ฐ์ 1์ด์ ์ํ ์๊ฐ์ผ๋ก ์์ธกํ๊ธฐ๋ฒ์๋1. ๋น
-์ค๋ฉ๊ฐ Ω(n) : ์ต์ ์ผ ๋์ ์ฐ์ฐ ํ์2. ๋น
-์ธํ θ(n) : ๋ณดํต์ผ ๋์ ์ฐ์ฐ ํ์3. ๋น
-์ค O(n) : ์ต์
์ผ ๋์ ์ฐ์ฐ ํ์๊ฐ ์๊ณ → ์ฝ๋ฉ ํ
์คํธ์์๋ ๋น์ฐํ ๋น
-์ค ํ๊ธฐ๋ฒ์ ๊ธฐ์ค์ผ๋ก ์ํ ์๊ฐ์ ๊ณ์ฐํ๋ ๊ฒ์ด ์ข์!(ํญ์ ์ต์
์ ๊ฒฝ์ฐ๋ฅผ ์๊ฐํ๊ณ ๋ก์ง์ ์ง์ผํจ) ์๊ฐ ๋ณต์ก๋๋ฅผ ๋ฐํ์ผ๋ก ์ฝ๋ ๋ก์ง์ ๊ฐ์ ํ๋ ค๋ฉด ์ฝ๋์ ์๊ฐ ๋ณต์ก๋๋ฅผ ๋์ถํ ์ ์์ด์ผํจ!์๊ฐ ๋ณต์ก๋ ๋์ถ ๊ธฐ์ค์ 1. ์์๋ ์๊ฐ ๋ณต์ก๋ ๊ณ์ฐ์์ ์ ์ธ 2. ๊ฐ์ฅ ๋ง์ด ์ค์ฒฉ๋ ๋ฐ๋ณต๋ฌธ์ ์ํ ํ์๊ฐ ์๊ฐ ๋ณต์ก๋์ ๊ธฐ์ค์ด ๋จ ๋๋ฒ๊น
๋ฌธ๋ฒ..