Sorting
์ ๋ ฌ (Sorting)
์ถ์ ๋น๋: ์ค
๋น์ถ ํ๊ทธ: ์ ํ ์ ๋ ฌ, ๋ฒ๋ธ ์ ๋ ฌ, ์ฝ์ ์ ๋ ฌ
์ ๋ ฌ์ ๊ธฐ๋ณธ ๊ฐ๋
- ์์๋๋ก ๋์ดํ๋ ๋ฐฉ๋ฒ
- ์ค๋ฆ์ฐจ์(Ascending): ์์๋๋ก
- ๋ด๋ฆผ์ฐจ์(Descending): ์ญ์์ผ๋ก
์ ๋ ฌ์ ์๊ฐ๋ณต์ก๋ โญ
์ ๋ ฌ ๋ฐฉ์ | ํ๊ท | ์ต์ |
---|---|---|
์ฝ์ ์ ๋ ฌ | O(Nยฒ) | O(Nยฒ) |
๋ฒ๋ธ ์ ๋ ฌ | O(Nยฒ) | O(Nยฒ) |
์ ํ ์ ๋ ฌ | O(Nยฒ) | O(Nยฒ) |
์ ์ ๋ ฌ | O(N^1.5) | O(N^1.5) |
ํ ์ ๋ ฌ | O(NlogN) | O(NlogN) |
์ด์ง ๋ณํฉ ์ ๋ ฌ | O(NlogN) | O(NlogN) |
ํต ์ ๋ ฌ | O(NlogN) | O(Nยฒ) |
๋ฒํท ์ ๋ ฌ | O(D+N) | O(Nยฒ) |
์ ๋ ฌ ์๊ณ ๋ฆฌ์ฆ ์์ธ
์ ํ ์ ๋ ฌ
- ๊ธฐ์ค๊ฐ(Key)์ผ๋ก ์ ํ๋ ๋ฐ์ดํฐ๋ฅผ ๋๋จธ์ง ๋ฐ์ดํฐ์ ๋น๊ต
- ์ ํ๋ ๋ฐ์ดํฐ์ ๋๋จธ์ง ๋ฐ์ดํฐ์ ์ต์๊ฐ์ ๋น๊ต
- ์ฒ๋ฆฌ ๋ฐฉ์:
- ์ ํ ๋ฐ์ดํฐ > ์ต์๊ฐ: ์นํ
- ์ ํ ๋ฐ์ดํฐ < ์ต์๊ฐ: ์ ์ง
- ํน์ง:
- ์ฒซ ๋ฐ์ดํฐ ๊ณต๊ฐ์ ๊ฐ์ฅ ์์ ๋ฐ์ดํฐ๊ฐ ์กด์ฌํ๊ฒ ๋จ
- ๋๋จธ์ง ๊ณต๊ฐ์ ์ ๋ ฌ ๋์์ผ๋ก ์ฌ์ง์
- ๋น๊ต๊ฐ ์์๋๋ ์์น๊ฐ ์ฆ๊ฐ
๋ฒ๋ธ ์ ๋ ฌ
- ๊ธฐ์ค๊ฐ์ผ๋ก ์ง์ ํ ๋ฐ์ดํฐ์ ๋ค์(์ค๋ฅธ์ชฝ) ๋ฐ์ดํฐ์ ๋น๊ต
- ์ฒ๋ฆฌ ๋ฐฉ์:
- ๊ธฐ์ค๊ฐ > ์ค๋ฅธ์ชฝ ๋ฐ์ดํฐ: ์นํ
- ๊ธฐ์ค๊ฐ < ์ค๋ฅธ์ชฝ ๋ฐ์ดํฐ: ์ ์ง
- ํน์ง:
- ๋ง์ง๋ง ์์น์ ๊ฐ์ฅ ํฐ ๋ฐ์ดํฐ๊ฐ ์กด์ฌ
- ์ข ๋ฃ ์์น๊ฐ ๊ฐ์๋จ
์ฝ์ ์ ๋ ฌ
- ์ข์ธก์ ์ ๋ ฌ๋ ์์์ ๋น๊ตํด์ ์ฝ์
- ์ฒ๋ฆฌ ๋ฐฉ์:
- ์ข์ธก ๋ฐ์ดํฐ์ ๋น๊ต
- ๋ ๋ฒ์งธ ๋ฐ์ดํฐ๋ถํฐ ์ ๋ ฌ์ ์งํ
- ๊ธฐ์ค๊ฐ๋ณด๋ค ํฐ ๋ฐ์ดํฐ๊ฐ ์์ผ๋ฉด ํฐ ๋ฐ์ดํฐ ์ค ๊ฐ์ฅ ์์ ๋ฐ์ดํฐ์ ์์น์ ๊ธฐ์ค๊ฐ์ ์ฝ์
- ํน์ง:
- ๋น๊ต ๋ฒ์๊ฐ ์ ์ ์ปค์ง
์(Shell) ์ ๋ ฌ
- ์ฝ์ ์ ๋ ฌ์ ๋จ์ ์ ๋ณด์ํ ์ ๋ ฌ ๋ฐฉ์
- ํน์ง:
- ๋ง์ ๋ฐ์ดํฐ์ ์ด๋์ด ํ์ํ ์ฝ์ ์ ๋ ฌ์ ๋จ์ ์ ๋ณด์
- ๋ฐ์ดํฐ๋ค์ ๊ฐ๊ฒฉ์ ์ ํ๊ณ ๊ฐ๊ฒฉ์ ์ ์ฐจ ์ค์ฌ๊ฐ๋ฉฐ ์ฝ์ ์ ๋ ฌ์ ์งํ
- ๋ค์์ ๋ถ๋ถ ๋ฆฌ์คํธ๋ฅผ ์์ฑํ์ฌ ์ฝ์ ์ ๋ ฌ์ ์งํ
ํ(Heap) ์ ๋ ฌ
- ์์ ์ด์ง ํธ๋ฆฌ ํํ๋ก ๋ง๋ค์ด ์ ๋ ฌํ๋ ๋ฐฉ์
- ์ฒ๋ฆฌ ๊ณผ์ :
- ์์ ๋ ธ๋๊ฐ ๋ถ๋ชจ ๋ ธ๋๋ณด๋ค ํฐ ๊ฒฝ์ฐ ์๋ฃ๋ฅผ ๊ตํ(ํํฅ์ ํ)
- ์ ๋ ฌ ๋์์ ํํฅ์ ํ์ผ๋ก ์์ฑ
- ์์ฑ๋ ํ์์ ์ต๋ ๋ ธ๋๋ฅผ ์ถ์ถ, ์ญ์ ํ๋ฉด์ ๋ฐฐ์ด์ ๋์์๋ถํฐ ๋์ด
- ๋ง์ง๋ง ๋ ธ๋๋ฅผ ์ฒซ ๋ ธ๋์ ์๋ฆฌ๋ก ์ด๋
- ๋ณ๊ฒฝ๋ ํ์ ํํฅ์ ์กฐ๊ฑด์ ๋ฐ๋ผ ๋ค์ ๊ตฌ์กฐํ
- ํ ๋ ธ๋๊ฐ 2๊ฐ ๋จ์ ๋๊น์ง ๋ฐ๋ณต
์ด์ง ๋ณํฉ ์ ๋ ฌ
- ๋ ๋ฐ์ดํฐ๋ฅผ ํ ์์ผ๋ก ๋ณํฉ ์ ๋ ฌ
- ์ ๋ ฌ๋ ๋ ๊ทธ๋ฃน์ ํ ์์ผ๋ก ์ ๋ ฌ ๋ฐ๋ณต
๋ฒํท ์ ๋ ฌ
- ์์ ๋ฒํท์ ๋ง๋ค๊ณ ์ ๋ ฌ์ ๋ง์น ๋ค ๋ค์ ํฉ์นจ
- ํน์ง:
- ๋ฐ์ดํฐ ๋ฒ์๋ฅผ ๊ท ๋ฑํ๊ฒ ๋๋
- ๋ฐ์ดํฐ ๋ฒ์ ํ์ ์ด ๊ฐ๋ฅํด์ผ ํจ
- ์คํ์ ์ด์ฉํจ
ํต(Quick) ์ ๋ ฌ
- ๋ถํ ์ ๋ณต ์๊ณ ๋ฆฌ์ฆ์ ์ ์ฉํ ๋น ๋ฅธ ์๊ฐ๋ณต์ก๋์ ์ ๋ ฌ
- ์ฒ๋ฆฌ ๋จ๊ณ:
- ๋ถํ (Divide): ๊ธฐ์ค๊ฐ(pivot)์ ๊ธฐ์ค์ผ๋ก ํฐ ๊ฐ์ ์ค๋ฅธ์ชฝ, ์์ ๊ฐ์ ์ผ์ชฝ์ ๋ถ๋ถ ๋ฐฐ์ด๋ก ๋ถํ
- ์ ๋ณต(Conquer): ๋ถ๋ถ ๋ฐฐ์ด์ ๋ค์ ๋ถํ , ์ ์ ํ ํฌ๊ธฐ๊ฐ ๋๋ฉด ์ ๋ ฌ
- ๊ฒฐํฉ(Combine): ๋ฐฐ์ด๋ค์ ํ๋๋ก ๊ฒฐํฉ
- ํน์ง:
- ๋ง์ ์๋ฃ ์ด๋์ ์์ ๊ณ ์ํ ํธ์ถ๋ก ์ ๋ ฌ์ ๋ฐ๋ณต
- ๊ธฐ์ค๊ฐ์ ์ด๋ฏธ ์ ๋ ฌ๋์๋ค๊ณ ํ๋จ