๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿ’๊ณต๋ถ€/ํฐ ๋ฐœ๊ฒฌ

quick sort (+ til์— ๋Œ€ํ•œ ์ฃผ์ €๋ฆฌ...)

by rindev 2021. 9. 14.

 

์ฃผ์ €๋ฆฌ ๋จผ์ €๐Ÿ˜‹

์ผ๋‹จ ์ง€๊ธˆ ์ง„ํ–‰์ค‘์ธ ํ‚น๊ฐ“์— ํŽ˜๋Ÿฌ๋งˆ์ œ์Šคํ‹ฐ๊ณจ์ ธ์Šค ๐Ÿ’—์Šคํ„ฐ๋””๐Ÿ’— ์ •๋ง ๋‹น์‹ ๋“ค ์—†์—ˆ์œผ๋ฉด ์–ด์ฉ”๋ป”ํ–ˆ์–ด.. ๋‹ค๊ฐ™์ด ์œผ์Œฐ์œผ์Œฐ ํ•ด์„œ ๋ญ๋“  ์ฒ™์ฒ™ํ•ด๋‚ด๋Š” ์ด ์Šคํ„ฐ๋”” ์ง„์งœ ์ตœ๊ณ ์•ผ........... 

์•„๋ฌดํŠผ 5์›”๋ถ€ํ„ฐ(!!!) ๋‹ค๊ฐ™์ด ๋…ธ์…˜์— ์ •๋ฆฌํ•œ til์ด ๊ฝค ์Œ“์—ฌ์„œ ๋ณต์Šต์ด ํ•„์š”ํ•˜๋‹ค๋Š” ๊ฒฐ๋ก ์ด ๋‚˜์™”๊ณ , ๊ทธ๋ƒฅ ์Šฅ ์ฝ์œผ๋ฉด ๋‡Œ๊ฐ€ ์ง€์‹์„ ๊ฑฐ๋ถ€ํ•  ๊ฒƒ์ด๋ฏ€๋กœ ๊ฒฐ๊ตญ ํ‹ฐ์Šคํ† ๋ฆฌ์— ํ•œ๋ฒˆ ๋‹ค์‹œ ์ •๋ฆฌํ•˜๊ธฐ๋กœ ๊ฒฐ์‹ฌ๐Ÿ˜Ž #๊ฐ€๋ณด์ž๊ณ 

 

Quick sort ๐Ÿ“Š

  • ๋ถ„ํ• ์ •๋ณต ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ค‘ ํ•˜๋‚˜
  • ํ‰๊ท ์ ์œผ๋กœ ๋งค์šฐ ๋น ๋ฅธ ์ˆ˜ํ–‰ ์†๋„๋ฅผ ๊ฐ€์ง O(N*logN)
  • ํ•˜์ง€๋งŒ ์ตœ์•…์˜ ๊ฒฝ์šฐ O(n^2)๊ฐ€ ๋  ์ˆ˜๋„ ์žˆ์œผ๋ฏ€๋กœ ํ”ผ๋ฒ—(pivot) ์„ ํƒ์— ์‹ ์ค‘ํ•ด์•ผ ํ•จ
    → List๋ฅผ ์ •๋ ฌ ํ•œ ๋‹ค์Œ์— ๋”ฑ ๊ฐ€์šด๋ฐ ๊ฐ’์„ ์„ ํƒํ•˜๋ฉด ์ข‹๊ฒ ์ง€๋งŒ.. ๊ทธ๋Ÿฌ๋ฉด ๊ตณ์ด ํ€ต์ •๋ ฌ์„ ์“ธ ํ•„์š”๊ฐ€....๐Ÿ˜ฐ
    → List์˜ ๊ธธ์ด๊ฐ€ 3 ์ด์ƒ์ธ ๊ฒฝ์šฐ, ์ž„์˜๋กœ ๊ฐ’์„ 3๊ฐœ ๊ณ ๋ฅธ ๋‹ค์Œ์— ๊ทธ ์ค‘์•™๊ฐ’์„ ํ”ผ๋ฒ—์œผ๋กœ ์„ค์ •ํ•˜๋ฉด ์ข‹์Œ

 

โœ… ํ€ต ์ •๋ ฌ์˜ ํฐ ํ๋ฆ„

์ด๋ฏธ์ง€ ์ถœ์ฒ˜ : https://gmlwjd9405.github.io/2018/05/10/algorithm-quick-sort.html

1. ๋ฆฌ์ŠคํŠธ์—์„œ ํ”ผ๋ฒ—์„ ์„ค์ •
2. ํ”ผ๋ฒ—์„ ๊ธฐ์ค€์œผ๋กœ ๋ฆฌ์ŠคํŠธ๋ฅผ 2๊ฐœ๋กœ ๋ถ„๋ฆฌ
    2-1. ๋ฆฌ์ŠคํŠธ์—์„œ ํ”ผ๋ฒ—์„ ์„ค์ •
    2-2. ํ”ผ๋ฒ—์„ ๊ธฐ์ค€์œผ๋กœ ์ž‘์€ ์š”์†Œ๋Š” ์™ผ์ชฝ, ํฐ ์š”์†Œ๋Š” ์˜ค๋ฅธ์ชฝ์œผ๋กœ ์ด๋™
3. ์žฌ๊ท€๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ 2๋ฒˆ ๊ณผ์ •์„ ๋ฐ˜๋ณต (๋ฆฌ์ŠคํŠธ์˜ ํฌ๊ธฐ๊ฐ€ 0์ด๋‚˜ 1์ด ๋  ๋•Œ ๊นŒ์ง€)

 

 

โœ… ์š”์†Œ์˜ ์ •๋ ฌ ํ๋ฆ„

์ฐธ๊ณ  : https://youtu.be/O-O-90zX-U4

ํ”ผ๋ฒ—์„ ๊ธฐ์ค€์œผ๋กœ ์ž‘์€๊ฑด ์™ผ์ชฝ, ํฐ๊ฑด ์˜ค๋ฅธ์ชฝ์œผ๋กœ ๋ณด๋‚ด๋Š” ๋ฐฉ๋ฒ•์€ ์œ„์™€ ๊ฐ™๋‹ค.

 

๐Ÿ’ก 1, 2, 3์€ ์•„๋ž˜์™€ ๊ฐ™์€ ๊ณผ์ •์„ ํ†ตํ•ด์„œ ์ด๋ฏธ ์ •๋ ฌ์ด ๋œ ๊ฒƒ์ด๋‹ค. 

๐Ÿ’ก ํ”ผ๋ฒ—์„ ์ •ํ•˜๋Š” ๋ฐฉ๋ฒ•์€ "๋ฆฌ์ŠคํŠธ์˜ 0๋ฒˆ ์ธ๋ฑ์Šค"๋ผ ํ•œ๋‹ค.

 

1. ํ”ผ๋ฒ—์„ (8)๋กœ ์„ค์ •ํ•œ๋‹ค.
2. ์ธ๋ฑ์Šค ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ ํ”ผ๋ฒ—๋ณด๋‹ค ํฐ ๊ฐ’์„ ํƒ์ƒ‰ํ•˜๊ณ , ๋‚ด๋ฆผ์ฐจ์ˆœ์œผ๋กœ๋Š” ํ”ผ๋ฒ—๋ณด๋‹ค ์ž‘์€ ๊ฐ’์„ ํƒ์ƒ‰ํ•œ๋‹ค.   
    → (9)์™€ (4)
3. ๋‘ ๊ฐ’์˜ ์œ„์น˜๋ฅผ ๊ตํ™˜ํ•˜๊ณ , ๋‹ค์‹œ ๊ฒ€์ƒ‰ํ•œ๋‹ค.
    → (10)์™€ (7)
4. ๋‘ ๊ฐ’์˜ ์œ„์น˜๋ฅผ ๊ตํ™˜ํ•˜๊ณ , ๋‹ค์‹œ ๊ฒ€์ƒ‰ํ•œ๋‹ค.
    → ํ”ผ๋ฒ—๋ณด๋‹ค ํฐ ๊ฐ’ : (10), ํ”ผ๋ฒ—๋ณด๋‹ค ์ž‘์€ ๊ฐ’ : (7)
    → ์ž‘์€๊ฐ’์˜ ์ธ๋ฑ์Šค < ํฐ ๊ฐ’์˜ ์ธ๋ฑ์Šค ์ผ ๊ฒฝ์šฐ, ๊ต์ฐจ๊ฐ€ ์ผ์–ด๋‚ฌ๋‹ค๊ณ  ํ•˜๋ฉฐ ํƒ์ƒ‰์„ ์ข…๋ฃŒํ•œ๋‹ค.
5. ์ž‘์€ ๊ฐ’(7)๊ณผ ํ”ผ๋ฒ—์˜ ์œ„์น˜๋ฅผ ๊ตํ™˜ํ•œ๋‹ค.
6. ํ”ผ๋ฒ—์„ ๊ธฐ์ค€์œผ๋กœ ๋ฆฌ์ŠคํŠธ๋ฅผ 2๊ฐœ๋กœ ๋‚˜๋ˆˆ๋‹ค.
7. ํ”ผ๋ฒ—์„ (7)๋กœ ์„ค์ •ํ•œ๋‹ค.
8. ์ธ๋ฑ์Šค ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ ํ”ผ๋ฒ—๋ณด๋‹ค ํฐ ๊ฐ’์„ ํƒ์ƒ‰ํ•˜๊ณ , ๋‚ด๋ฆผ์ฐจ์ˆœ์œผ๋กœ๋Š” ํ”ผ๋ฒ—๋ณด๋‹ค ์ž‘์€ ๊ฐ’์„ ํƒ์ƒ‰ํ•œ๋‹ค.   
    → ํ”ผ๋ฒ—๋ณด๋‹ค ํฐ ๊ฐ’ : ์—†์Œ, ํ”ผ๋ฒ—๋ณด๋‹ค ์ž‘์€ ๊ฐ’ : (6)
    → ํฐ ๊ฐ’, ์ž‘์€ ๊ฐ’ ์ค‘ ํ•˜๋‚˜๋ผ๋„ ์—†์„ ๊ฒฝ์šฐ(๋๊นŒ์ง€ ํƒ์ƒ‰ํ•œ ๊ฒฝ์šฐ) ๊ต์ฐจ๊ฐ€ ์ผ์–ด๋‚œ ๊ฒƒ๊ณผ ๊ฐ™์Œ, ํƒ์ƒ‰ ์ข…๋ฃŒ
9. ์ž‘์€ ๊ฐ’(6)๊ณผ ํ”ผ๋ฒ—์˜ ์œ„์น˜๋ฅผ ๊ตํ™˜ํ•œ๋‹ค.
10. ํ”ผ๋ฒ—์„ ๊ธฐ์ค€์œผ๋กœ ๋ฆฌ์ŠคํŠธ๋ฅผ 2๊ฐœ๋กœ ๋‚˜๋ˆˆ๋‹ค.

 

์œ„์˜ ๊ณผ์ •์„ ๋ฐ˜๋ณตํ•œ๋‹ค.

 

์ด๋ฏธ์ง€ ์ถœ์ฒ˜ : https://gmlwjd9405.github.io/2018/05/10/algorithm-quick-sort.html

๋ง๋กœ ์„ค๋ช…ํ•œ ๊ณผ์ •์„ ๊ทธ๋ฆผ์œผ๋กœ ๋ณด๋ฉด ์œ„์™€ ๊ฐ™๋‹ค!

 

 

 

์ฐธ๊ณ 

๋Œ“๊ธ€