Skip to main content

Command Palette

Search for a command to run...

๐Ÿ“š ํ€ต์†ŒํŠธ (QuickSort) : ์›๋ฆฌ, ๋ฐฉ์‹ ๋น„๊ต, ์ž๋ฐ” ๊ตฌํ˜„๊นŒ์ง€

Updated
โ€ข3 min read

โœจ ํ€ต์†ŒํŠธ๋ž€?

ํ€ต์†ŒํŠธ(QuickSort)๋Š” ๋ถ„ํ• ์ •๋ณต(Divide and Conquer) ์ „๋žต์„ ํ™œ์šฉํ•œ ์ •๋ ฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜์ž…๋‹ˆ๋‹ค.

ํ”ผ๋ฒ—(Pivot)์„ ๊ธฐ์ค€์œผ๋กœ ๋ฐฐ์—ด์„ ๋ถ„ํ• ํ•˜๊ณ , ๊ฐ ๋ถ€๋ถ„ ๋ฐฐ์—ด์— ๋Œ€ํ•ด ์žฌ๊ท€์ ์œผ๋กœ ์ •๋ ฌ์„ ์ˆ˜ํ–‰ํ•˜์—ฌ ์ „์ฒด ์ •๋ ฌ์„ ์™„์„ฑํ•ฉ๋‹ˆ๋‹ค.


โš™๏ธ ์ž‘๋™ ์›๋ฆฌ: ๋ถ„ํ• ์ •๋ณต

ํ€ต์†ŒํŠธ๋Š” ๋‹ค์Œ ์„ธ ๋‹จ๊ณ„๋กœ ๊ตฌ์„ฑ๋ฉ๋‹ˆ๋‹ค.

๋‹จ๊ณ„์„ค๋ช…
๋ถ„ํ• ํ”ผ๋ฒ—์„ ๊ธฐ์ค€์œผ๋กœ ์ž‘์€ ๊ฐ’๊ณผ ํฐ ๊ฐ’์œผ๋กœ ๋ฐฐ์—ด์„ ๋‚˜๋ˆˆ๋‹ค
์ •๋ณต์ขŒ์šฐ ํ•˜์œ„ ๋ฐฐ์—ด์— ๋Œ€ํ•ด ์žฌ๊ท€์ ์œผ๋กœ ํ€ต์†ŒํŠธ๋ฅผ ์ ์šฉํ•œ๋‹ค
๊ฒฐํ•ฉ๋ณ„๋„ ๋ณ‘ํ•ฉ ์—†์ด ์ œ์ž๋ฆฌ ์ •๋ ฌ (in-place) ๋ฐฉ์‹์œผ๋กœ ์™„๋ฃŒ๋จ

๐Ÿ“Œ ๋ถ„ํ• (Partition)์˜ ์˜๋ฏธ

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

  • ์ž๊ธฐ ์ž์‹ ๊ณผ๋„ ๋น„๊ตํ•˜๊ณ  ํ•„์š”ํ•˜๋ฉด ์Šค์™‘

  • ์ด ๊ณผ์ •์—์„œ ํ”ผ๋ฒ—์˜ ์œ„์น˜๋Š” ์ •๋ ฌ๋œ ์ƒํƒœ๋กœ ํ™•์ •๋จ

  • ์ดํ›„ ์ขŒ/์šฐ ํ•˜์œ„ ๋ฐฐ์—ด์„ ๊ณ„์† ํ€ต์†ŒํŠธ๋กœ ์ •๋ ฌ


๐Ÿง  ํ”ผ๋ฒ—๊ณผ ํŒŒํ‹ฐ์…”๋‹์€ ์–ด๋–ป๊ฒŒ ์ด๋ฃจ์–ด์ง€๋Š”๊ฐ€?

ํŒŒํ‹ฐ์…”๋‹์ด๋ž€ ํ”ผ๋ฒ— ๊ธฐ์ค€์œผ๋กœ ๋ฐฐ์—ด ์š”์†Œ๋ฅผ ๋น„๊ตํ•˜๋ฉฐ ์ž๋ฆฌ๋ฅผ ๋ฐ”๊พธ๋Š” ๊ณผ์ •์ž…๋‹ˆ๋‹ค.

  • ์ผ๋ฐ˜์ ์œผ๋กœ ๋ชจ๋“  ์ธ๋ฑ์Šค๋ฅผ ํ”ผ๋ฒ—๊ณผ ๋น„๊ตํ•ฉ๋‹ˆ๋‹ค.

  • ์ž๊ธฐ ์ž์‹ ๋„ ๋น„๊ต ๋Œ€์ƒ์ด๋ฉฐ, ์กฐ๊ฑด ์ถฉ์กฑ ์‹œ ์ž๊ธฐ ์ž์‹ ๊ณผ๋„ ์Šค์™‘์ด ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

  • ๋น„๊ต ๋ฐฉ์‹ ๋ฐ ์Šค์™‘ ๋ฐฉ์‹์€ ๋ถ„ํ•  ์•Œ๊ณ ๋ฆฌ์ฆ˜์— ๋”ฐ๋ผ ๋‹ฌ๋ผ์ง‘๋‹ˆ๋‹ค.


๐Ÿงญ ๋ถ„ํ•  ๋ฐฉ์‹ ์ข…๋ฅ˜: Hoare vs. Lomuto

ํ•ญ๋ชฉHoare ๋ถ„ํ• Lomuto ๋ถ„ํ• 
์ด๋ฆ„ ์œ ๋ž˜Tony Hoare (ํ€ต์†ŒํŠธ ์ฐฝ์‹œ์ž)Nico Lomuto (๊ตฌํ˜„ ๋ฐฉ์‹ ์ œ๊ณต์ž)
ํ”ผ๋ฒ— ์œ„์น˜๋ณดํ†ต ์ค‘๊ฐ„๊ฐ’๋ณดํ†ต ๋งˆ์ง€๋ง‰ ๊ฐ’
๋น„๊ต ๋ฐฉ์‹์–‘ ๋์—์„œ ์ค‘์•™์œผ๋กœ ์ด๋™์™ผ์ชฝ์—์„œ ์˜ค๋ฅธ์ชฝ์œผ๋กœ ์ˆœ์ฐจ ๋น„๊ต
์Šค์™‘ ํšŸ์ˆ˜์ ์Œ๋งŽ์Œ (์ž๊ธฐ ์ž์‹ ๊ณผ๋„ ์ž์ฃผ ์Šค์™‘)
์‹คํ–‰ ์†๋„๋น ๋ฆ„์ƒ๋Œ€์ ์œผ๋กœ ๋А๋ฆผ
์ฝ”๋“œ ๋ณต์žก๋„๋ณต์žก๋‹จ์ˆœ
์‚ฌ์šฉ ์šฉ๋„์‹ค๋ฌด, ๋Œ€๊ทœ๋ชจ ๋ฐ์ดํ„ฐํ•™์Šต์šฉ, ๋‹จ์ˆœ ๊ตฌํ˜„

๐Ÿงช ์‹คํ–‰ ์˜ˆ์‹œ ๋น„๊ต (๊ณตํ†ต ๋ฐฐ์—ด:

[34, 7, 23, 32, 5, 62]

)

โœ… Hoare ๋ฐฉ์‹ (ํ”ผ๋ฒ—: 23)

  1. swap(0,4) โ†’ [5, 7, 23, 32, 34, 62]

  2. left=3, right=2 โ†’ ์ข…๋ฃŒ

โ†’ ๊ฒฐ๊ณผ: [5, 7, 23, 32, 34, 62]

โœ… Lomuto ๋ฐฉ์‹ (ํ”ผ๋ฒ—: 62)

  • ์ž๊ธฐ ์ž์‹ ๊ณผ 6๋ฒˆ ์Šค์™‘ ๋ฐœ์ƒ

  • ๊ฐ’ ์žฌ๋ฐฐ์น˜ ์—†์ด ๊ทธ๋Œ€๋กœ [34, 7, 23, 32, 5, 62]

โ†’ ๋ถ„ํ• ๋งŒ ์™„๋ฃŒ๋œ ์ƒํƒœ (์ •๋ ฌ์€ ์ดํ›„ ์ง„ํ–‰๋จ)


๐Ÿ’ป ์ž๋ฐ” ๊ตฌํ˜„ ์˜ˆ์ œ

1. Hoare ๋ถ„ํ•  ๋ฐฉ์‹

int pivot = arr[(left + right) / 2];
while (left <= right) {
    while (arr[left] < pivot) left++;
    while (arr[right] > pivot) right--;
    if (left <= right) {
        swap(arr, left, right);
        left++; right--;
    }
}

2. Lomuto ๋ถ„ํ•  ๋ฐฉ์‹

int pivot = arr[high];
int i = low - 1;
for (int j = low; j < high; j++) {
    if (arr[j] <= pivot) {
        i++; swap(arr, i, j);
    }
}
swap(arr, i + 1, high);

โœ… ์ •๋ฆฌ ์š”์•ฝ

๊ตฌ๋ถ„Hoare ๋ถ„ํ• Lomuto ๋ถ„ํ• 
์†๋„ํ‰๊ท ์ ์œผ๋กœ ๋” ๋น ๋ฆ„๋‹จ์ˆœํ•˜์ง€๋งŒ ๋น„ํšจ์œจ ๊ฐ€๋Šฅ
๋น„๊ต ๊ตฌ์กฐ์–‘์ชฝ์—์„œ ๊ฐ€์šด๋ฐ๋กœํ•œ ๋ฐฉํ–ฅ ์ˆœ์ฐจ ๋น„๊ต
์Šค์™‘์ ๊ณ  ํšจ์œจ์ ์ž์ฃผ ๋ฐœ์ƒ
์ฝ”๋“œ ๋‚œ์ด๋„๋‹ค์†Œ ๋ณต์žก๊ฐ„๋‹จํ•˜๊ณ  ์ง๊ด€์ 
์ ํ•ฉ ์šฉ๋„์‹ค๋ฌด, ๋Œ€๊ทœ๋ชจ ์ •๋ ฌํ•™์Šต์šฉ, ๊ฐ„๋‹จํ•œ ์ •๋ ฌ

More from this blog

Tech Lead์˜ ๊ธฐ์ˆ  ๋กœ๋“œ๋งต ์ž‘์„ฑ๋ฒ•: ์‹ค์ „ ์˜ˆ์‹œ์™€ ํ•จ๊ป˜

"์šฐ๋ฆฌ ํŒ€ ๊ธฐ์ˆ  ๋ฐฉํ–ฅ์ด ๋ญ์˜ˆ์š”?" Tech Lead๊ฐ€ ๋˜๋ฉด ๋ฐ˜๋“œ์‹œ ๋“ฃ๊ฒŒ ๋˜๋Š” ์งˆ๋ฌธ์ž…๋‹ˆ๋‹ค. ํŒ€์›๋“ค์€ ์ž์‹ ์ด ์–ด๋””๋กœ ๊ฐ€๊ณ  ์žˆ๋Š”์ง€ ์•Œ๊ณ  ์‹ถ์–ดํ•ฉ๋‹ˆ๋‹ค. ๋‚ด๋…„์—๋„ ์ด ๊ธฐ์ˆ ์„ ์“ธ ๊ฑด์ง€, ์ƒˆ๋กœ์šด ๊ฑธ ๋ฐฐ์›Œ์•ผ ํ•˜๋Š”์ง€, ์ด ํ”„๋กœ์ ํŠธ๊ฐ€ ๋๋‚˜๋ฉด ๋ญ˜ ํ•˜๊ฒŒ ๋˜๋Š”์ง€. ๊ธฐ์ˆ  ๋กœ๋“œ๋งต์€ ์ด ์งˆ๋ฌธ์— ๋Œ€ํ•œ ๋‹ต์ž…๋‹ˆ๋‹ค. ๋‹จ์ˆœํžˆ "์ด๋Ÿฐ ๊ธฐ์ˆ  ์“ธ ๊ฑฐ์˜ˆ์š”"๊ฐ€ ์•„๋‹ˆ๋ผ, ์™œ ๊ทธ ๋ฐฉํ–ฅ์œผ๋กœ ๊ฐ€๋Š”์ง€, ์–ธ์ œ์ฏค ๋„๋‹ฌํ•  ์ˆ˜ ์žˆ๋Š”์ง€, ๊ฐ์ž ๋ฌด์—‡์„ ์ค€๋น„ํ•ด์•ผ ํ•˜๋Š”์ง€๋ฅผ ๋ณด์—ฌ์ฃผ๋Š” ์ง€๋„์ž…๋‹ˆ๋‹ค. ์ด ๊ธ€์—์„œ๋Š” ์‹ค์ œ๋กœ ...

Jan 10, 20266 min read

Tech Lead์˜ ๋น„์šฉ ๊ด€์ : ๋ˆ์„ ์•„๋Š” ๊ฐœ๋ฐœ์ž๊ฐ€ ๋˜์–ด์•ผ ํ•˜๋Š” ์ด์œ 

Tech Lead๋Š” ๋‹จ์ˆœํžˆ "์ฝ”๋“œ๋ฅผ ์ž˜ ์งœ๋Š” ์‹œ๋‹ˆ์–ด ๊ฐœ๋ฐœ์ž"๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค. ๊ธฐ์ˆ ์  ์˜์‚ฌ๊ฒฐ์ •์ด ๋น„์ฆˆ๋‹ˆ์Šค์— ๋ฏธ์น˜๋Š” ์˜ํ–ฅ์„ ์ดํ•ดํ•˜๊ณ , ๋น„์šฉ ํšจ์œจ์ ์ธ ์„ ํƒ์„ ํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ €๋Š” ์ง์žฅ์„ ๋‹ค๋‹ˆ๋ฉด์„œ 6๋…„๊ฐ„ ์นœ๊ตฌ๋“ค๊ณผ ์ฐฝ์—…์„ ์ค€๋น„ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ž๋ณธ์ด ๋„‰๋„‰ํ•˜์ง€ ์•Š์•˜๊ธฐ์— ๋ชจ๋“  ๊ธฐ์ˆ ์  ์„ ํƒ์—์„œ "์ด๊ฒŒ ์ •๋ง ํ•„์š”ํ•œ๊ฐ€?", "๋” ์ €๋ ดํ•œ ๋ฐฉ๋ฒ•์€ ์—†๋Š”๊ฐ€?"๋ฅผ ๊ณ ๋ฏผํ•  ์ˆ˜๋ฐ–์— ์—†์—ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ ๊ฒฝํ—˜์ด ์ง€๊ธˆ์˜ ๋น„์šฉ ๊ด€์ ์„ ํ˜•์„ฑํ•˜๋Š” ๋ฐ ํฐ ์˜ํ–ฅ์„ ์ฃผ์—ˆ์Šต๋‹ˆ๋‹ค. ์ด ๊ธ€์—์„œ๋Š” Tec...

Jan 10, 20265 min read

HTTP Toolkit์œผ๋กœ Spring Boot ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ HTTP ์š”์ฒญ ์บก์ฒ˜ํ•˜๊ธฐ

IntelliJ IDEA์—์„œ HTTP Toolkit ํ”„๋ก์‹œ ์„ค์ •ํ•˜๊ธฐ Spring Boot ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๊ฐœ๋ฐœํ•  ๋•Œ ์™ธ๋ถ€ API ์š”์ฒญ์„ ๋ชจ๋‹ˆํ„ฐ๋งํ•˜๊ณ  ๋””๋ฒ„๊น…ํ•˜๊ธฐ ์œ„ํ•ด HTTP Toolkit์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์Šต๋‹ˆ๋‹ค. ์ด ๊ธ€์—์„œ๋Š” IntelliJ IDEA์—์„œ HTTP Toolkit์œผ๋กœ ํ”„๋ก์‹œ ์„ค์ •ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋‹จ๊ณ„๋ณ„๋กœ ์„ค๋ช…ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. 1. HTTP Toolkit ์„ค์ • ๋จผ์ € HTTP Toolkit์„ ์‹คํ–‰ํ•˜๊ณ  ํ”„๋ก์‹œ ์„œ๋ฒ„๋ฅผ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค. HTTP Too...

Jul 4, 20253 min read

์ธ๊ณต์ง€๋Šฅ ์—ญ์‚ฌ ์ธ๋ฌผ ์ •๋ฆฌ: ์‹œ๋Œ€๋ณ„ ๋ฐœ์ „๊ณผ ํ•ต์‹ฌ ๊ธฐ์—ฌ์ž

์ธ๊ณต์ง€๋Šฅ(Artificial Intelligence, AI)์€ ์ฒ ํ•™์  ์งˆ๋ฌธ์—์„œ ์‹œ์ž‘ํ•ด ์•Œ๊ณ ๋ฆฌ์ฆ˜, ์ปดํ“จํŒ… ๊ธฐ์ˆ , ๋ฐ์ดํ„ฐ์˜ ๋ฐœ์ „์„ ๊ฑฐ์ณ ์˜ค๋Š˜๋‚  ์ƒ์„ฑํ˜• AI๋กœ ์ง„ํ™”ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด ๊ธ€์€ AI ์—ญ์‚ฌ ์† ์ฃผ์š” ์ธ๋ฌผ์„ ์‹œ๋Œ€๋ณ„๋กœ ์ •๋ฆฌํ•˜๊ณ , ๊ฐ ์ธ๋ฌผ์ด ๋งŒ๋“ค์–ด๋‚ธ ๊ธฐ์ˆ ์  ์„ฑ๊ณผ์™€ ๊ฐœ๋…์„ ์ค‘์‹ฌ์œผ๋กœ ์†Œ๊ฐœํ•ฉ๋‹ˆ๋‹ค. 1950๋…„๋Œ€: ๊ธฐ๊ณ„ ์ง€๋Šฅ ๊ฐœ๋…์˜ ์ถœ๋ฐœ์  ์•จ๋Ÿฐ ํŠœ๋ง (Alan Turing, 1912โ€“1954, ์˜๊ตญ) ์ธ๊ณต์ง€๋Šฅ ๊ฐœ๋…์˜ ์ฒ ํ•™์  ๊ธฐ์ดˆ ์ œ์‹œ์ž ์ฃผ์š” ์ด๋ ฅ (19...

May 22, 20254 min read

Labaratory

19 posts