์ •๋ ฌ (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) ์ •๋ ฌ

alt text

  • ์‚ฝ์ž… ์ •๋ ฌ์˜ ๋‹จ์ ์„ ๋ณด์™„ํ•œ ์ •๋ ฌ ๋ฐฉ์‹
  • ํŠน์ง•:
    • ๋งŽ์€ ๋ฐ์ดํ„ฐ์˜ ์ด๋™์ด ํ•„์š”ํ•œ ์‚ฝ์ž… ์ •๋ ฌ์˜ ๋‹จ์ ์„ ๋ณด์™„
    • ๋ฐ์ดํ„ฐ๋“ค์˜ ๊ฐ„๊ฒฉ์„ ์ •ํ•˜๊ณ  ๊ฐ„๊ฒฉ์„ ์ ์ฐจ ์ค„์—ฌ๊ฐ€๋ฉฐ ์‚ฝ์ž… ์ •๋ ฌ์„ ์ง„ํ–‰
    • ๋‹ค์ˆ˜์˜ ๋ถ€๋ถ„ ๋ฆฌ์ŠคํŠธ๋ฅผ ์ƒ์„ฑํ•˜์—ฌ ์‚ฝ์ž… ์ •๋ ฌ์„ ์ง„ํ–‰

ํž™(Heap) ์ •๋ ฌ

  • ์™„์ „ ์ด์ง„ ํŠธ๋ฆฌ ํ˜•ํƒœ๋กœ ๋งŒ๋“ค์–ด ์ •๋ ฌํ•˜๋Š” ๋ฐฉ์‹
  • ์ฒ˜๋ฆฌ ๊ณผ์ •:
    1. ์ž์‹ ๋…ธ๋“œ๊ฐ€ ๋ถ€๋ชจ ๋…ธ๋“œ๋ณด๋‹ค ํฐ ๊ฒฝ์šฐ ์ž๋ฃŒ๋ฅผ ๊ตํ™˜(ํ•˜ํ–ฅ์‹ ํž™)
    2. ์ •๋ ฌ ๋Œ€์ƒ์„ ํ•˜ํ–ฅ์‹ ํž™์œผ๋กœ ์ƒ์„ฑ
    3. ์ƒ์„ฑ๋œ ํž™์—์„œ ์ตœ๋Œ€ ๋…ธ๋“œ๋ฅผ ์ถ”์ถœ, ์‚ญ์ œํ•˜๋ฉด์„œ ๋ฐฐ์—ด์— ๋์—์„œ๋ถ€ํ„ฐ ๋‚˜์—ด
    4. ๋งˆ์ง€๋ง‰ ๋…ธ๋“œ๋ฅผ ์ฒซ ๋…ธ๋“œ์˜ ์ž๋ฆฌ๋กœ ์ด๋™
    5. ๋ณ€๊ฒฝ๋œ ํž™์€ ํ•˜ํ–ฅ์‹ ์กฐ๊ฑด์— ๋”ฐ๋ผ ๋‹ค์‹œ ๊ตฌ์กฐํ™”
    6. ํž™ ๋…ธ๋“œ๊ฐ€ 2๊ฐœ ๋‚จ์„ ๋•Œ๊นŒ์ง€ ๋ฐ˜๋ณต

์ด์ง„ ๋ณ‘ํ•ฉ ์ •๋ ฌ

  • ๋‘ ๋ฐ์ดํ„ฐ๋ฅผ ํ•œ ์Œ์œผ๋กœ ๋ณ‘ํ•ฉ ์ •๋ ฌ
  • ์ •๋ ฌ๋œ ๋‘ ๊ทธ๋ฃน์„ ํ•œ ์Œ์œผ๋กœ ์ •๋ ฌ ๋ฐ˜๋ณต

๋ฒ„ํ‚ท ์ •๋ ฌ

alt text

  • ์ž‘์€ ๋ฒ„ํ‚ท์„ ๋งŒ๋“ค๊ณ  ์ •๋ ฌ์„ ๋งˆ์นœ ๋’ค ๋‹ค์‹œ ํ•ฉ์นจ
  • ํŠน์ง•:
    • ๋ฐ์ดํ„ฐ ๋ฒ”์œ„๋ฅผ ๊ท ๋“ฑํ•˜๊ฒŒ ๋‚˜๋ˆ”
    • ๋ฐ์ดํ„ฐ ๋ฒ”์œ„ ํŒŒ์•…์ด ๊ฐ€๋Šฅํ•ด์•ผ ํ•จ
    • ์Šคํƒ์„ ์ด์šฉํ•จ

ํ€ต(Quick) ์ •๋ ฌ

  • ๋ถ„ํ•  ์ •๋ณต ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์ ์šฉํ•œ ๋น ๋ฅธ ์‹œ๊ฐ„๋ณต์žก๋„์˜ ์ •๋ ฌ
  • ์ฒ˜๋ฆฌ ๋‹จ๊ณ„:
    1. ๋ถ„ํ• (Divide): ๊ธฐ์ค€๊ฐ’(pivot)์„ ๊ธฐ์ค€์œผ๋กœ ํฐ ๊ฐ’์€ ์˜ค๋ฅธ์ชฝ, ์ž‘์€ ๊ฐ’์€ ์™ผ์ชฝ์˜ ๋ถ€๋ถ„ ๋ฐฐ์—ด๋กœ ๋ถ„ํ• 
    2. ์ •๋ณต(Conquer): ๋ถ€๋ถ„ ๋ฐฐ์—ด์„ ๋‹ค์‹œ ๋ถ„ํ• , ์ ์ ˆํ•œ ํฌ๊ธฐ๊ฐ€ ๋˜๋ฉด ์ •๋ ฌ
    3. ๊ฒฐํ•ฉ(Combine): ๋ฐฐ์—ด๋“ค์„ ํ•˜๋‚˜๋กœ ๊ฒฐํ•ฉ
  • ํŠน์ง•:
    • ๋งŽ์€ ์ž๋ฃŒ ์ด๋™์„ ์—†์• ๊ณ  ์ˆœํ™˜ ํ˜ธ์ถœ๋กœ ์ •๋ ฌ์„ ๋ฐ˜๋ณต
    • ๊ธฐ์ค€๊ฐ’์€ ์ด๋ฏธ ์ •๋ ฌ๋˜์—ˆ๋‹ค๊ณ  ํŒ๋‹จ