๋ฐ˜์‘ํ˜•

 

๊ตญ๋ฏผ๋Œ€ํ•™๊ต์—์„œ "์‰ฝ๊ฒŒ ๋ฐฐ์šฐ๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜" ๊ต์žฌ๋ฅผ ์ด์šฉํ•œ
 ๋ฐ•ํ•˜๋ช… ๊ต์ˆ˜๋‹˜์˜ ๊ฐ•์˜ ๊ต์•ˆ์„ ์ด์šฉํ•˜์—ฌ ์ˆ˜์—… ๋‚ด์šฉ์„ ์ •๋ฆฌํ•˜์˜€์Šต๋‹ˆ๋‹ค

 

 

Sorting?

 

์ •๋ ฌ(Sorting) : ๋ฐฐ์—ด ์›์†Œ๋“ค์„ ๋ฒˆํ˜ธ ์ˆœ, ์•ŒํŒŒ๋ฒณ ์ˆœ ๋“ฑ ์ •ํ•ด์ง„ ์ˆœ์„œ๋Œ€๋กœ ์žฌ๋ฐฐ์น˜ํ•˜๋Š” ๋ฌธ์ œ

 

3 / 1 / 2 / 5 / 4   ->  1 / 2 / 3 / 4 / 5

 

 

Sorting Algorithms์—๋Š” ํฌ๊ฒŒ

 

  • ๊ธฐ๋ณธ์ ์ธ ์ •๋ ฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜
    • ํ‰๊ท  ์‹œ๊ฐ„๋ณต์žก๋„๊ฐ€ ฮ˜(n^2)์ธ ์•Œ๊ณ ๋ฆฌ์ฆ˜๋“ค
    • Selection Sort, Insertion Sort, Bubble Sort
  • ๊ณ ๊ธ‰ ์ •๋ ฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜
    • ํ‰๊ท  ์‹œ๊ฐ„๋ณต์žก๋„๊ฐ€ ฮ˜(nlogn)์ธ ์•Œ๊ณ ๋ฆฌ์ฆ˜๋“ค
    • Merge Sort, Quicksort, Heapsort
  • ํŠน์ˆ˜ ์ •๋ ฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜
    • ํŠน์ˆ˜ํ•œ ๊ฒฝ์šฐ ์‹œ๊ฐ„๋ณต์žก๋„๊ฐ€ ฮ˜(n)์ธ ์•Œ๊ณ ๋ฆฌ์ฆ˜๋“ค
    • Radix Sort, Counting Sort

 

๋กœ ๋‚˜๋ˆŒ ์ˆ˜ ์žˆ์Œ

 

์ด๋ฒˆ ํฌ์ŠคํŒ…์—์„œ๋Š” ๊ธฐ๋ณธ์ ์ธ ์ •๋ ฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜ 3๊ฐ€์ง€๋ฅผ ๋‹ค๋ฃฐ ์˜ˆ์ •!

 

=> ๊ฐ sort์˜ ๋ณต์žก๋„๋ฅผ ์‚ดํŽด๋ณผ๊ฑด๋ฐ ๋ณดํ†ต ์ •๋ ฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ๊ฒฝ์šฐ swap ์—ฐ์‚ฐ๊ณผ comparisons 2๊ฐ€์ง€๋ฅผ ๋”ฐ์ง

 

Bubble Sort

 

์›๋ฆฌ๋Š” ์ •๋ ฌ๋˜์ง€ ์•Š์€ ๊ฐ’ ์ค‘ ์ตœ๋Œ€๊ฐ’์„ ๋งจ ๋’ค๋กœ ๋ณด๋‚ด๋Š” ๊ฒƒ์„ ๋ฐ˜๋ณตํ•˜์—ฌ ์ •๋ ฌํ•˜๋Š” ๊ฒƒ์ด๋‹ค!

 

์ตœ๋Œ“๊ฐ’ ๋งจ ๋’ค๋กœ ๋ณด๋‚ด๊ธฐ

 

=> ์ตœ๋Œ“๊ฐ’์„ ๋งจ ๋’ค๋กœ ๋ณด๋‚ด๊ธฐ ์œ„ํ•ด, ์ธ์ ‘ํ•œ ๋‘ ๊ฐ’์„ ๋ฐ˜๋ณตํ•˜์—ฌ ๋น„๊ต ๋ฐ ๊ตํ™˜

 

bubble sort pseudocode

 

bubble sort ๋ณต์žก๋„

 

 

Best Case ์ผ ๋•Œ ๋ชจ๋“  ๋ฐฐ์—ด ์›์†Œ๋“ค์€ ์ •ํ•ด์ง„ ์ˆœ์„œ๋Œ€๋กœ ๋ฐฐ์น˜๋˜์–ด ์žˆ์„ ๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ์— swap ์—ฐ์‚ฐ์ด ์ผ์–ด๋‚˜์ง€ ์•Š๋Š”๋‹ค

=> 0


(์ธ์ ‘ํ•œ ๋‘ ๊ฐ’์„ if๋ฌธ์œผ๋กœ ๊ณ„์† ํ™•์ธํ•ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋น„๊ต ์—ฐ์‚ฐ์€ ฮ˜(n^2) ์œผ๋กœ ๋ณผ ์ˆ˜ ์žˆ์Œ)

 

Worst Case ์ผ ๋•Œ ๋ชจ๋“  ๋ฐฐ์—ด ์›์†Œ๊ฐ€ ์ •ํ•ด์ง„ ์ˆœ์„œ์˜ ๋ฐ˜๋Œ€๋กœ ๋ฐฐ์น˜๋˜์–ด ์žˆ์„ ๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ์— ๋ชจ๋“  ๋ฐ˜๋ณต ๊ณผ์ •์—์„œ swap ์—ฐ์‚ฐ์ด ์ผ์–ด๋‚จ

=> ฮ˜(n^2)

 

(์ธ์ ‘ํ•œ ๋‘ ๊ฐ’์„ if๋ฌธ์œผ๋กœ ๊ณ„์† ํ™•์ธํ•ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋น„๊ต ์—ฐ์‚ฐ์€ ฮ˜(n^2) ์œผ๋กœ ๋ณผ ์ˆ˜ ์žˆ์Œ)

 

Average Case๋Š” ๋ชจ๋“  ๋ฐฐ์—ด ์›์†Œ๊ฐ€ ๋ฌด์ž‘์œ„๋กœ ์ •๋ ฌ๋˜์–ด ์žˆ์„ ๋•Œ์ธ๋ฐ ํ‰๊ท ์ ์œผ๋กœ swap์€ ์ ˆ๋ฐ˜ ์ •๋„ ๋ฐœ์ƒํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•˜๋ฉด ๋จ

=> ฮ˜(n^2) 

 

(์ธ์ ‘ํ•œ ๋‘ ๊ฐ’์„ if๋ฌธ์œผ๋กœ ๊ณ„์† ํ™•์ธํ•ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋น„๊ต ์—ฐ์‚ฐ์€ ฮ˜(n^2) ์œผ๋กœ ๋ณผ ์ˆ˜ ์žˆ์Œ)

 

Worst Case์— ๋น„ํ•ด ์‹ค์ œ swap ์—ฐ์‚ฐ์€ Average Case์—์„œ ์ ˆ๋ฐ˜ ์ •๋„ ์ค„ ํ…๋ฐ ์ƒ์ˆ˜ํ•ญ์„ ์ œ๊ฑฐํ•˜๋ฉด ๊ฒฐ๊ตญ ฮ˜(n^2)๋กœ ๋™์ผํ•จ

 

Selection Sort

 

์›๋ฆฌ๋Š” ์ •๋ ฌ๋˜์ง€ ์•Š์€ ๊ฐ’๋“ค ์ค‘์—์„œ ์ตœ์†Ÿ๊ฐ’์„ ์ฐพ์•„ ์•ž์— ๋†“๋Š” ๊ฑธ ๋ฐ˜๋ณตํ•˜๋Š” ๊ฒƒ์ด๋‹ค!

selection sort ์›๋ฆฌ

 

selection sort pseudocode

 

selection sort ๋ณต์žก๋„

 

 

Best Case ์ผ ๋•Œ ๋ชจ๋“  ๋ฐฐ์—ด ์›์†Œ๋“ค์€ ์ •ํ•ด์ง„ ์ˆœ์„œ๋Œ€๋กœ ๋ฐฐ์น˜๋˜์–ด ์žˆ์„ ๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ์— swap ์—ฐ์‚ฐ์ด ์ผ์–ด๋‚˜์ง€ ์•Š๋Š”๋‹ค

=> ์ฆ‰, ์ฐพ์€ ์ตœ์†Ÿ๊ฐ’์ด ํ˜„์žฌ ์„ ํƒ๋œ ๊ฐ’๊ณผ ๋™์ผํ•˜๋ฏ€๋กœ swap์ด ๋ฐœ์ƒํ•˜์ง€ ์•Š๊ธฐ์— 0

 

(์ตœ์†Ÿ๊ฐ’์ด ๋ฌด์—‡์ธ์ง€ ํ™•์ธํ•˜๋Ÿฌ ํ˜„์žฌ ์„ ํƒ๋œ ๊ฐ’์„ ๋‚˜๋จธ์ง€ ๋ถ€๋ถ„๊ณผ ๋น„๊ตํ•ด์•ผํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋น„๊ต ์—ฐ์‚ฐ์€ ฮ˜(n^2) ์œผ๋กœ ๋ณผ ์ˆ˜ ์žˆ์Œ)

 

Worst Case ์ผ ๋•Œ ๋ชจ๋“  ๋ฐฐ์—ด ์›์†Œ๊ฐ€ ์ •ํ•ด์ง„ ์ˆœ์„œ์˜ ๋ฐ˜๋Œ€๋กœ ๋ฐฐ์น˜๋˜์–ด ์žˆ์„ ๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ์— ๋ชจ๋“  ๋ฐ˜๋ณต ๊ณผ์ •์—์„œ swap ์—ฐ์‚ฐ์ด ์ผ์–ด๋‚จ

=> ๋กœ์ง์ƒ swap ์—ฐ์‚ฐ์€ ์ตœ์†Ÿ๊ฐ’์„ ํƒ์ƒ‰ํ•˜๊ณ  ๋‚˜์„œ ํ•œ ๋ฒˆ ๋ฐœ์ƒํ•˜๋ฏ€๋กœ n-1๋ฒˆ ์ฆ‰, ฮ˜(n)

 

(์ตœ์†Ÿ๊ฐ’์ด ๋ฌด์—‡์ธ์ง€ ํ™•์ธํ•˜๋Ÿฌ ํ˜„์žฌ ์„ ํƒ๋œ ๊ฐ’์„ ๋‚˜๋จธ์ง€ ๋ถ€๋ถ„๊ณผ ๋น„๊ตํ•ด์•ผํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋น„๊ต ์—ฐ์‚ฐ์€ ฮ˜(n^2) ์œผ๋กœ ๋ณผ ์ˆ˜ ์žˆ์Œ)

 

Average Case๋Š” ๋ชจ๋“  ๋ฐฐ์—ด ์›์†Œ๊ฐ€ ๋ฌด์ž‘์œ„๋กœ ์ •๋ ฌ๋˜์–ด ์žˆ์„ ๋•Œ์ธ๋ฐ ๋ณดํ†ต swap์€ ์ ˆ๋ฐ˜ ์ •๋„ ๋ฐœ์ƒํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•˜๋ฉด ๋จ

 

(์ตœ์†Ÿ๊ฐ’์ด ๋ฌด์—‡์ธ์ง€ ํ™•์ธํ•˜๋Ÿฌ ํ˜„์žฌ ์„ ํƒ๋œ ๊ฐ’์„ ๋‚˜๋จธ์ง€ ๋ถ€๋ถ„๊ณผ ๋น„๊ตํ•ด์•ผํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋น„๊ต ์—ฐ์‚ฐ์€ ฮ˜(n^2) ์œผ๋กœ ๋ณผ ์ˆ˜ ์žˆ์Œ)

 

Worst Case์— ๋น„ํ•ด ์‹ค์ œ swap ์—ฐ์‚ฐ์€ Average Case์—์„œ ์ ˆ๋ฐ˜ ์ •๋„ ์ค„ ํ…๋ฐ ์ƒ์ˆ˜ํ•ญ์„ ์ œ๊ฑฐํ•˜๋ฉด ๊ฒฐ๊ตญ ฮ˜(n)๋กœ ๋™์ผํ•จ

 

Insertion Sort

 

(๊ธฐ๋ณธ ์ •๋ ฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜์—์„œ bubble, selection ์— ๋น„ํ•ด ์ œ์ผ ๋งŽ์ด ์‚ฌ์šฉ๋˜๋Š” sort ๋ฐฉ์‹์ž„)

 

์›๋ฆฌ๋Š” ์ •๋ ฌ๋˜์ง€ ์•Š์€ ๊ฐ’๋“ค ์ค‘ ํ•˜๋‚˜๋ฅผ ๊ณจ๋ผ์„œ, ์ด๋ฏธ ์ •๋ ฌ๋œ ๊ฐ’๋“ค ์‚ฌ์ด์— ๋ผ์›Œ๋„ฃ๊ธฐ๋ฅผ ๋ฐ˜๋ณตํ•˜๋Š” ๊ฒƒ์ด๋‹ค!

 

insertion sort ์›๋ฆฌ

 

=> ์ ์  ํ•œ ์นธ์”ฉ ์˜†์œผ๋กœ ๋•…๋”ฐ๋จน๊ธฐ๋ฅผ ํ•˜๋ฉด์„œ ๋ฐ”๋กœ ๋ฐ”๋กœ ์ •๋ ฌํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•˜๋ฉด ์ดํ•ด๊ฐ€ ์‰ฌ์›€ (์ •๋ ฌ๋œ ์˜์—ญ์„ ํ™•์žฅํ•˜๋Š” ๋А๋‚Œ)

 

 

insertion sort pseudocode
insertion sort ๋ณต์žก๋„

 

 

 

Best Case ์ผ ๋•Œ ๋ชจ๋“  ๋ฐฐ์—ด ์›์†Œ๋“ค์€ ์ •ํ•ด์ง„ ์ˆœ์„œ๋Œ€๋กœ ๋ฐฐ์น˜๋˜์–ด ์žˆ์„ ๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ์— swap ์—ฐ์‚ฐ์ด ์ผ์–ด๋‚˜์ง€ ์•Š๋Š”๋‹ค

=> 0

 

(์ •ํ•ด์ง„ ์ˆœ์„œ๋Œ€๋กœ ๋ฐฐ์น˜๋˜์–ด ์žˆ์œผ๋ฏ€๋กœ ์˜์—ญ์„ ํ™•์žฅํ•  ๋•Œ๋งŒ ํ•œ ๋ฒˆ์”ฉ ๋ฐ”๋กœ ์ธ์ ‘ํ•œ ๊ฐ’๊ณผ ํฌ๊ธฐ๋ฅผ ๋น„๊ตํ•˜๊ณ  break ๋ฌธ์— ์˜ํ•ด ๋” ์ด์ƒ ๋น„๊ต X)

=> ฮ˜(n)

 

Worst Case ์ผ ๋•Œ ๋ชจ๋“  ๋ฐฐ์—ด ์›์†Œ๊ฐ€ ์ •ํ•ด์ง„ ์ˆœ์„œ์˜ ๋ฐ˜๋Œ€๋กœ ๋ฐฐ์น˜๋˜์–ด ์žˆ์„ ๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ์— ๋ชจ๋“  ๋ฐ˜๋ณต ๊ณผ์ •์—์„œ swap ์—ฐ์‚ฐ์ด ์ผ์–ด๋‚จ

=> ฮ˜(n^2)

 

(๋ฐ˜๋ณต๋ฌธ์„ ๋Œ๋ฉฐ ์ธ์ ‘ํ•œ ๊ฐ’๊ณผ ์ƒˆ๋กœ ๋“ค์–ด์˜จ ๊ฐ’์˜ ํฌ๊ธฐ๋ฅผ ๋น„๊ตํ•  ๋•Œ break์— ๊ฑธ๋ฆฌ์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ๋ชจ๋“  ๋ฐ˜๋ณต ๊ณผ์ •์—์„œ ๋น„๊ต ์—ฐ์‚ฐ์ด ์ผ์–ด๋‚จ)

=> ฮ˜(n^2)

 

Average Case๋Š” ๋ชจ๋“  ๋ฐฐ์—ด ์›์†Œ๊ฐ€ ๋ฌด์ž‘์œ„๋กœ ์ •๋ ฌ๋˜์–ด ์žˆ์„ ๋•Œ์ธ๋ฐ ๋ณดํ†ต swap์€ ์ ˆ๋ฐ˜ ์ •๋„ ๋ฐœ์ƒํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•˜๋ฉด ๋จ

 

(๋ฐ˜๋ณต๋ฌธ์„ ๋Œ๋ฉฐ ์ธ์ ‘ํ•œ ๊ฐ’๊ณผ ์ƒˆ๋กœ ๋“ค์–ด์˜จ ๊ฐ’์˜ ํฌ๊ธฐ๋ฅผ ๋น„๊ตํ•˜๊ณ  break๊ฐ€ ๊ฑธ๋ฆฌ์ง€ ์•Š์œผ๋ฉด ํ˜„์žฌ ์˜์—ญ์—์„œ ์ •๋ ฌ์ด ์™„๋ฃŒ๋  ๋•Œ ๊นŒ์ง€ ๊ณ„์† ๋น„๊ต๋ฅผ ํ•˜๋ฏ€๋กœ Worst Case์— ๋น„ํ•ด ์ ˆ๋ฐ˜ ์ •๋„ ๋œ ๋น„๊ต์—ฐ์‚ฐ์ด ์‹คํ–‰๋˜๊ฒ ์ง€๋งŒ ๊ฒฐ๊ตญ ์ƒ์ˆ˜๋ฅผ ์ œ์™ธํ•˜๋ฉด ๋น„๊ต ์—ฐ์‚ฐ์€ ฮ˜(n^2) ์œผ๋กœ ๋ณผ ์ˆ˜ ์žˆ์Œ)

 

Worst Case์— ๋น„ํ•ด ์‹ค์ œ swap ์—ฐ์‚ฐ์€ Average Case์—์„œ ์ ˆ๋ฐ˜ ์ •๋„ ์ค„ ํ…๋ฐ ์ƒ์ˆ˜ํ•ญ์„ ์ œ๊ฑฐํ•˜๋ฉด ๊ฒฐ๊ตญ ฮ˜(n)๋กœ ๋™์ผํ•จ

 

 

๐Ÿ’ก Insertion Sort๋Š” ๋ฐฐ์—ด์ด ๊ฑฐ์˜ ์ •๋ ฌ๋œ ์ƒํƒœ์ผ ๋•Œ(Best Case์— ๊ฐ€๊นŒ์šธ์ˆ˜๋ก) ๋งค์šฐ ํšจ์œจ์ ์ธ ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ์Œ ๐Ÿ’ก

 

๋ฐ˜์‘ํ˜•

'๐Ÿ”ฅ Algorithm' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

L05 - Heapsort  (2) 2024.10.06
L04 - Merge Sort & Quicksort  (2) 2024.09.27
L02 - Recurrences  (1) 2024.09.17
L01 - Algorithm Analysis  (1) 2024.09.14
์‹œ๊ฐ„๋ณต์žก๋„์™€ ๋””๋ฒ„๊น…  (3) 2024.01.17