01.์๊ณ ๋ฆฌ์ฆ์ ๊ฐ์
1. ์๊ณ ๋ฆฌ์ฆ์ ๊ฐ๋
๐ค์๊ณ ๋ฆฌ์ฆ : ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํ ์ผ๋ จ์ ์ ์ฐจ, ์ด๋ค ์์
์ ์ํํ๊ธฐ ์ํ ๋ช
๋ น์ด๋ฅผ ์
๋ ฅ๋ฐ์ ๊ฒฐ๊ณผ๋ฅผ ์ถ๋ ฅํด ๋ด๋ ๊ณผ์ ์ ๊ธฐ์ ํ ๊ฒ
์๊ณ ๋ฆฌ์ฆ ์ฌ์ดํธ
์๊ณ ๋ฆฌ์ฆ ์ํ๊ณผ ์ปดํจํฐ๊ณผํ, ์ธ์ดํ ๋๋ ์ฎ์ธ ๋ถ์ผ์์ ์ด๋ ํ ๋ฌธ์ ๋ฅผ ํ์ด๋งบ๊ธฐ ์ํด ์ ํด์ง ์ผ๋ จ์ ์ ์ฐจ๋ ๋ฐฉ๋ฒ์ ๊ณต์ํํ ํํ๋ก ํํํ ๊ฒ, ๊ณ์ฐ์ ์ํ ๋จ๊ณ์ ์ ์ฐจ
9์ธ๊ธฐ ํ๋ฅด์์ ์ํ์์ธ ๋ฌดํจ๋ง๋ ์์ฝฐ๋ฆฌ์ฆ์ ์ด๋ฆ์ ๋ผํด์ดํํ ์๊ณ ๋ฆฌ์ค๋ฌด์ค์์ ์ ๋
-์ํค๋ํผ์
2. ์๊ณ ๋ฆฌ์ฆ์ ํํ ๋ฐฉ๋ฒ
๐ค์์ฐ์ด : ์ฌ๋์ด ์ฌ์ฉํ๋ ์์ฐ ์ธ์ด.
- ์์ฐ์ด๋ก ํํ๋ ์๊ณ ๋ฆฌ์ฆ์ ์ฌ๋์๊ฒ ์น์ํ ์ธ์ด๋ก ๊ตฌ์ฑ๋์ด ์์ด ์ฝ๊ฒ ์์ฑํ ์ ์์ง๋ง, ๋ช
ํํ์ง ์์ ํํ ๋๋ฌธ์ ์คํด๊ฐ ๋ฐ์ํ ์ ์์.
๐ค์์๋ : ๊ธฐํธ์ ์ ์ ์ด์ฉํด ๋ฌธ์ ํด๊ฒฐ์ ํ์ํ ์ฒ๋ฆฌ ๊ณผ์ ์ ํํํ ๋ฐฉ๋ฒ.
- ์์๋๋ ์ ์ฒด์ ์ธ ๊ตฌ์กฐ ํ๋ฆ์ ํ์
ํ๋ ๋ฐ ์ ํฉํ์ง๋ง, ๋ณต์กํ ์๊ณ ๋ฆฌ์ฆ์ ํํํ ๋๋ ๊ทธ๋ฆผ๋ ๋ณต์กํด์ ธ ํจ๊ณผ๊ฐ ๋จ์ด์ง.
๐ค ์์ฌ์ฝ๋(์๋ ์ฝ๋) : ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๋ก ์์ฑ๋ ์ฝ๋์ ๋น์ทํ ํํ๋ก ์๊ณ ๋ฆฌ์ฆ์ ํํํ๋ ๋ฐฉ๋ฒ์ผ๋ก, ๊ตฌ์กฐ๋ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์ ๋น์ทํ์ง๋ง ํน์ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์ ๋ฌธ๋ฒ์ ๋ฐ๋ฅด์ง๋ ์์.
- ์ค์ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๋ ์๋๋ค. ์์ ๋ก์ด ์๋จ์ผ ๋ฟ
๐คํ๋ก๊ทธ๋๋ฐ ์ธ์ด: ํ๋ก๊ทธ๋๋ฐ์ ํ ๋ ์ฌ์ฉํ๋ ์ธ์ด๋ก , ์ปดํจํฐ๊ฐ ์ดํดํ ์ ์๋ ์ธ์ด.
3. ์๊ณ ๋ฆฌ์ฆ์ ์ค๊ณ
๐ค์๊ณ ๋ฆฌ์ฆ์ ์ค๊ณ: ๊ฐ์ฅ ํจ์จ์ ์ธ ๋ฌธ์ ํด๊ฒฐ ๋ฐฉ๋ฒ์ ์ฐพ์๋ด๋ ๊ณผ์
<์๊ณ ๋ฆฌ์ฆ ์ ์ด ๊ตฌ์กฐ์ ์ข
๋ฅ>
์์ฐจ๊ตฌ์กฐ : ๋ช
๋ น์ ์์๋๋ก ํ๋์ฉ ์ํํ๋ ๊ตฌ์กฐ
์ ํ๊ตฌ์กฐ : ์กฐ๊ฑด์ ๊ฒฐ๊ณผ์ ๋ฐ๋ผ ๋ช
๋ น์ ์ ํํด์ ์คํํ๋ ๊ตฌ์กฐ
๋ฐ๋ณต๊ตฌ์กฐ : ๊ฐ์ ๋์์ ์ฌ๋ฌ๋ฒ ๋ฐ๋ณตํด ์ํํด์ผํ ๋ ์คํํ๋ ๊ตฌ์กฐ
โ ์๊ณ ๋ฆฌ์ฆ์ ์กฐ๊ฑด
- ์
๋ ฅ : ์๊ณ ๋ฆฌ์ฆ์ ์
๋ ฅ๋๋ ์๋ฃ๊ฐ 0๊ฐ ์ด์ ์กด์ฌํด์ผ ํจ.
- ์ถ๋ ฅ : ์๊ณ ๋ฆฌ์ฆ์ด ์คํ๋๋ฉด ๊ฒฐ๊ณผ ๊ฐ์ด 1๊ฐ ์ด์ ๋์์ผ ํจ.
- ์ ํ์ฑ : ์๊ณ ๋ฆฌ์ฆ์ ๋ฐ๋์ ์ข
๋ฃ๋์ด์ผ ํจ.
- ๋ช
ํ์ฑ : ์๊ณ ๋ฆฌ์ฆ์ ๋ช
๋ น์ ๋ชจํธํ์ง ์๊ณ ๋ช
ํํด์ผ ํจ.
- ์คํ ๊ฐ๋ฅ์ฑ : ์๊ณ ๋ฆฌ์ฆ์ ๋ชจ๋ ๋ช
๋ น์ ์คํ ๊ฐ๋ฅํด์ผ ํจ.
02.์๊ณ ๋ฆฌ์ฆ์ ๋ถ์
1. ์๊ณ ๋ฆฌ์ฆ์ ๋ณต์ก๋
๐ค์๊ณ ๋ฆฌ์ฆ์ ๋ณต์ก๋: ํด๋น ์๊ณ ๋ฆฌ์ฆ์ด ํน์ ๊ธฐ์ค์ ๋ฐ๋ผ ์ผ๋ง๋ ๋น ๋ฅด๊ณ ๋๋ฆฌ๊ฒ ์คํ๋๋์ง๋ฅผ ๋ณด๋ ๊ฒ
- 'cpu ์คํ ์๊ฐ'์ ์๊ณ ๋ฆฌ์ฆ์ ํจ์จ์ฑ์ ํ๋จํ๋ ๊ฐ์ฅ ์ค์ํ ํ๊ฐ ๊ธฐ์ค์ธ๋ฐ, ์ด ๊ธฐ์ค์ผ๋ก ์๊ณ ๋ฆฌ์ฆ ํจ์จ์ฑ์ ์ธก์ ํ๋ ๊ฐ์ฅ ์ข์ ๋ฐฉ๋ฒ์ ์๊ฐ ๋ณต์ก๋๋ฅผ ๋ถ์ํ๋ ๊ฒ์ด๋ค.
2. ์๊ฐ ๋ณต์ก๋(Time complexity)
๐ค ์๊ฐ ๋ณต์ก๋(Time complexity) : ์๊ณ ๋ฆฌ์ฆ์ด ์คํ๋๊ณ ์ข
๋ฃ๋ ๋๊น์ง ์ด๋ ์ ๋์ ์๊ฐ์ด ํ์ํ์ง๋ฅผ ์ธก์ ํ๋ ๋ฐฉ๋ฒ.
3. ๋น
์ค ํ๊ธฐ๋ฒ(Big O Notaion)
๐ค ๋น
์ค ํ๊ธฐ๋ฒ(Big O Notaion) : ์๊ณ ๋ฆฌ์ฆ์ ์๊ฐ ๋ณต์ก๋๋ฅผ ํํํ๋ ๋ฐฉ๋ฒ.
- ์ปดํจํฐ์์ ์
๋ ฅ๋ ๊ฐ์ ํฌ๊ธฐ์ ๋ฐ๋ผ ์๊ณ ๋ฆฌ์ฆ ์ฒ๋ฆฌ ํ์๊ฐ ์ผ๋ง๋ ์ฆ๊ฐํ๋์ง ๋ํ๋ผ ๋ ์ฌ์ฉ.
- ์
๋ ฅ๋ ๋ฐ์ดํฐ์ ๊ฐ์์ ๋ฐ๋ฅธ ์๊ณ ๋ฆฌ์ฆ์ ํจ์จ์ฑ์ ๋ถ์ํ ๋, ๋น
์ค ํ๊ธฐ๋ฒ์ ์ด์ฉํ๋ฉด ์๊ณ ๋ฆฌ์ฆ์ ๋ณต์ก๋๋ฅผ ๊ทผ์ฟ๊ฐ์ผ๋ก ๋ํ๋ผ ์ ์์.
- O(n) ์๊ณ ๋ฆฌ์ฆ์ ์๊ฐ ๋ณต์ก๋๊ฐ O(n^2)์๊ณ ๋ฆฌ์ฆ๋ณด๋ค ๋ฎ๋ค๋ ๊ฒ์ ์ ์ ์์.
- O(n): ์๊ณ ๋ฆฌ์ฆ์ ์ํ ํ์๊ฐ n๋งํผ ์ปค์ง๋ค.
- O(n^2): ์๊ณ ๋ฆฌ์ฆ์ ์ํํ์๊ฐ n2๋งํผ ์ปค์ง๋ค.
โ ๋น
์ค ํ๊ธฐ๋ฒ ๊น๊ฒ ์๊ธฐ
- ์ด๋ค ์๊ณ ๋ฆฌ์ฆ์ ์ํ ์๋๊ฐ ์
๋ ฅ๋ ๋ฐ์ดํฐ ๊ฐ์ x์ ๋ฐ๋ผ f(x)
โ ๋ํ์ ์ธ ๋น
์ค ํ๊ธฐ๋ฒ ์ข
๋ฅ
3. ์ ๋ ฌ ์๊ณ ๋ฆฌ์ฆ
๐ค์ ๋ ฌ: ๋ฐ์ดํฐ๋ฅผ ์ผ์ ๊ท์น์ ๋ฐ๋ผ ์ฌ๋ฐฐ์ด ํ๋ ๊ฒ.
๐ค์ ํ์ ๋ ฌ: ์๋ฌด๋ ๊ฒ๋ ๋์ธ ๋ฐ์ดํฐ ์ค ๊ฐ์ฅ ์์ ๋ฐ์ดํฐ์ ์์น๋ฅผ ๊ฐ์ฅ ์์ ์๋ ๋ฐ์ดํฐ ์์น์ ๋ฐ๊พธ๋ ์๊ณ ๋ฆฌ์ฆ

๐ค๋ฒ๋ธ์ ๋ ฌ(bubble sort): ๋๋ํ ๋์ธ ๋ฐ์ดํฐ ๋ ๊ฐ ์ค ์ซ์๊ฐ ํฐ ๋ฐ์ดํฐ๋ฅผ ๋ค๋ก ๋ณด๋ด๋ฉฐ ์ ๋ ฌํ๋ ๋ฐฉ์.
- ๋ฒ๋ธ ์ ๋ ฌ์ ์ผ์ชฝ์ ๋์ธ ๋ฐ์ดํฐ์์๋ถํฐ ์์, ํฌ๊ธฐ์์ผ๋ก ์๋ฆฌ๋ฅผ ์๋ก
๋ฐ๊ฟ.

๐ค์ฝ์
์ ๋ ฌ :
- ์ฌ๋ฆฌ๊ณ ๋น๊ตํ๊ณ ๋ฐ๊ณ ๋ฃ๊ณ

โ๋ณํฉ ์ ๋ ฌ
- ๋ณํฉ ์ ๋ ฌ(merge sort): ๊ณ ๊ธ ์ ๋ ฌ ์๊ณ ๋ฆฌ์ฆ ์ค ํ๋๋ก , ์ ๋ ฌ๋ ์ฌ๋ฌ ๊ฐ์ ์๋ฃ ์งํฉ์ ๋ณํฉํ์ฌ ํ๋์ ์ ๋ ฌ๋ ์งํฉ์ผ๋ก ๋ง๋๋ ์ ๋ ฌ ๋ฐฉ๋ฒ.
- ๋ณํฉ์ ๋ ฌ ์ํ๊ณผ์
- ๋ถํ :
- ์ ๋ณต
- ๋ณํฉ ์ ๋ ฌ ์์
1.๋ถํ ๋จ๊ณ -> 2.์ ๋ณต ๋ฐ ๊ฒฐํฉ ๋จ๊ณ

๐ป์ ๋ ฌ ์๊ณ ๋ฆฌ์ฆ ์ถ๊ฐ ์ค๋ช
์ฝ์
์ ๋ ฌ, ๋ฒ๋ธ์ ๋ ฌ, ์ ํ์ ๋ ฌ: O(n^2)
๋ณํฉ์ ๋ ฌ, ํ ์ ๋ ฌ, ํต ์ ๋ ฌ :
์ฝ์
์ ๋ ฌ ์๊ฐ๋ณต์ก๋ ๊ณ์ฐ
๋ณํฉ์ ๋ ฌ ์๊ฐ๋ณต์ก๋ ๊ณ์ฐ
1 2 3 4
13141516
1234
1113456 : stabel.
๋ฐ์ดํฐ๊ฐ ๋ค์ด์จ ์์๋๋ก ๋ณด์กด์ด ๋์ด์ผํ๋๋ฐ
์๋ณธ ๋ด์ฉ์ ์๋ ๊ฐ์ ๋ฐ์ดํฐ๊ฐ ์์ด๊ฒ ๋๋ฉด
์์ ์ ์ด์ง ์๋ค.
- ๊ฐ์ ๋ด์ฉ๋ฌผ์ด์ด๋ ์์๊ฐ ์ค์ํ๋ค.
3214
11113456 : unstable
4. ๊ฒ์ ์๊ณ ๋ฆฌ์ฆ
๐ค์์ฐจ๊ฒ์
- ์ ๋ ฌ๋์ด ์์ง ์์ ๋ฐ์ดํฐ์ ์์ฐจ ๊ฒ์
(๋ฐฉ๋ฒ1)
- ์ ๋ ฌ๋ ๋ฐ์ดํฐ์ ์์ฐจ ๊ฒ์ ( ์๊ฐ์ด ๋ฐ ์ ๋ ์ค์ด๋ ๋ค)
(๋ฐฉ๋ฒ2)
๐ค์ด์ง๊ฒ์ : ๋ฐ์ดํฐ ๊ฐ์ด๋ฐ์ ์์นํ ํญ๋ชฉ์ ๊ฒ์ ๊ฐ๊ณผ ๋น๊ตํ์ฌ ๊ฒ์ ๊ฐ์ด ๋ ํฌ๋ฉด ์ค๋ฅธ์ชฝ ๋ถ๋ถ์ ๊ฒ์ํ๊ณ ๊ฒ์ ๊ฐ์ด ๋ ์์ผ๋ฉด ์ผ์ชฝ๋ถ๋ถ์ ๊ฒ์
- ์ซ์ ๋ง์ถ๊ธฐ ์ฒ๋ผ ์ฐพ๋๊ฒ ์ด์ง ๊ฒ์
๐คํด์ฑ : ์ฐ์ ์ ์ธ ์ฐ์ฐ์ ์ด์ฉํด ํค๊ฐ ์๋ ์์น๋ฅผ ๊ณ์ฐํ๊ณ , ๊ทธ ์์น๋ฅผ ๋ฐ๋ก ์ฐพ์๊ฐ๋ ๋ฐฉ๋ฒ.
- ํด์ฌ ํจ์ : ํค ๊ฐ์ ๋ฐ์ดํฐ ์์น๋ก ๊ตฌํํ๋ ํจ์
- ํด์ฌ ํ
์ด๋ธ
๐ปํด์ฑ ์ถ๊ฐ ์ค๋ช
a b c d...
1 2 3 4 ...
f('ace') = 1+3+5 =8
f('dd') = 4+ 4 =8
๊ฐ ๊ฐ์ ๋ฐ๋ฅธ ๋ฐฐ์ด์ ์์ด๋ฅผ ์ง์ ํด์ฃผ๋ ๊ฒ
array[8] =ace
๊ทผ๋ฐ ๋จ์ ์ด ๋ฐ์ํ๊ฒ ๋๋ค. dd ๋ ํฉ์ด 8์ธ๋ฐ ์ ๋ฐฐ์ด 8๋ฒ์ ๋ค์ด๊ฐ๋๊ฒ ์๋ ๊ฒ์ธ๊ฐ..?
ํด์ฌ ๊ฐ ์ถฉ๋
์ด๋ฏธ ์ธํ
๋ ๋ฐฐ์ด์ ace๊ฐ ๋ค์ด ์๊ธฐ ๋๋ฌธ์ dd๊ฐ ๋ค์ด๊ฐ ์๋ฆฌ๊ฐ ์๋ค. ์ด๊ฑธ ํด์ฌ๊ฐ ์ถฉ๋์ด๋ผ๊ณ ๋ถ๋ฅธ๋ค. ๊ฐ์ ๊ฐ์ด ๋ค์ด๊ฐ ๋ฐ์ดํฐ๊ฐ 2๊ฐ ์ด์ ๋ค์ด๊ฐ๋ ค ํ ๋.
- ํด๊ฒฐ๋ฐฉ๋ฒ 1 : ๋ฐฐ์ด 9๋ฒ์ ๋ฃ์.(์ผ๋จ ํฉ์ 8์ด๊ธดํ๋ฐ) ->๊ทผ๋ฐ ์ด๋ฌ๋ฉด ๋ ๋ ํผ๋ ๋ฐ์ (์ถํ์ 9๊ฐ์ด ๋ ๋ค์ด์ค๋ คํ๋ฉด ์ถ๋)
- ํด๊ฒฐ๋ฐฉ๋ฒ 2 : ๋งํฌ๋ฅผ ํด์ ์ฐ๊ฒฐ๋ฆฌ์คํธ ์์ฑ ํ ๊ฐ๋ฅดํค๊ฒ ๋ง๋ค์ด์ค๋ค. ๊ทธ๋์ ํฌ์ธํฐ๋ฅผ ํตํด ์ฐ๊ฒฐํด์ ๋ง๋ค์ด ์ค ์ ์๋ค.