๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

Data Structure

(4)
์„ ํƒ ์ •๋ ฌ(Selection Sort) ์„ ํƒ ์ •๋ ฌ(Selection Sort)์˜ ํŠน์ง• ์„ ํƒ ์ •๋ ฌ์€ ๋ฐฐ์—ด์„ ์ˆœํšŒํ•˜๋ฉด์„œ ๊ฐ ๋‹จ๊ณ„์—์„œ ๋ฐฐ์—ด์˜ ๋‚˜๋จธ์ง€ ๋ถ€๋ถ„ ์ค‘์—์„œ ์ตœ์†Œ๊ฐ’์„ ์ฐพ์•„ ์ตœ์†Œ๊ฐ’์„ ํ•ด๋‹น ๋‹จ๊ณ„์˜ ์‹œ์ž‘์ ์— ์œ„์น˜ํ•œ ์š”์†Œ์™€ ๊ตํ™˜ํ•œ๋‹ค. ์ด ๊ณผ์ •์„ ๋ฐ˜๋ณตํ•˜์—ฌ ์ •๋ ฌํ•œ๋‹ค. ์ œ์ž๋ฆฌ ์ •๋ ฌ(In-place sorting): ์„ ํƒ ์ •๋ ฌ์€ ์ถ”๊ฐ€์ ์ธ ๋ฐฐ์—ด์„ ํ•„์š”๋กœ ํ•˜์ง€ ์•Š์œผ๋ฉฐ, ๋ฐฐ์—ด ๋‚ด์—์„œ ์š”์†Œ๋“ค์˜ ์œ„์น˜๋ฅผ ๊ตํ™˜ํ•˜์—ฌ ์ •๋ ฌํ•œ๋‹ค. ๋ถˆ์•ˆ์ • ์ •๋ ฌ(Unstable sort): ์„ ํƒ ์ •๋ ฌ์€ ๋™์ผํ•œ ๊ฐ’์„ ๊ฐ€์ง„ ์š”์†Œ์˜ ์ƒ๋Œ€์  ์ˆœ์„œ๊ฐ€ ์ •๋ ฌ ๊ณผ์ •์—์„œ ๋ฐ”๋€” ์ˆ˜ ์žˆ๋‹ค. ๋™์ผํ•œ ์›์†Œ๊ฐ€ ์ดˆ๊ธฐ ๋ฐฐ์—ด์—์„œ ๊ฐ€์ง„ ์ˆœ์„œ๋ฅผ ๋ณด์กดํ•˜์ง€ ์•Š๋Š”๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, [4, 6, 3, 4, 2, 8] ๋ฐฐ์—ด์— ์ค‘๋ณต๋œ ๊ฐ’์ด ์žˆ์„ ๋•Œ, ์ •๋ ฌ ๊ณผ์ •์—์„œ ์ด ๋‘ 4 ์ค‘ ์–ด๋А ํ•˜๋‚˜๊ฐ€ ๋‹ค๋ฅธ ์œ„์น˜๋กœ ์ด๋™ํ•  ๋•Œ, ๊ทธ๋“ค ์‚ฌ์ด์˜ ์›๋ž˜ ์ˆœ์„œ๊ฐ€ ..
๋ฒ„๋ธ” ์ •๋ ฌ(Bubble Sort) ๋ฒ„๋ธ” ์ •๋ ฌ์˜ ํŠน์ง• ๋ฒ„๋ธ” ์ •๋ ฌ์€ ์˜†์— ์žˆ๋Š” ์š”์†Œ์™€ ๋น„๊ตํ•ด์„œ ์ž์‹ ์˜ ์œ„์น˜๋ฅผ ์ฐพ์•„๊ฐ„๋‹ค. ๋ฒ„๋ธ” ์ •๋ ฌ์€ ํ•œ๋ฒˆ ์ˆœํšŒํ•  ๋•Œ๋งˆ๋‹ค, ๊ฐ€์žฅ ์˜ค๋ฅธ์ชฝ ๋์ž๋ฆฌ๋ถ€ํ„ฐ ์ˆœ์ฐจ์ ์œผ๋กœ ์ž๋ฆฌ๋ฅผ ์ฐพ์•„๊ฐ„๋‹ค. ์ž์‹ ์˜ ์œ„์น˜๋ฅผ ์ฐพ์•„๊ฐ€๋Š” ํ˜•ํƒœ๊ฐ€ ๋ฒ„๋ธ” ๊ฐ™๋‹ค๊ณ  ํ•ด์„œ ๋ฒ„๋ธ” ์ •๋ ฌ์ด๋ผ ํ•œ๋‹ค. ๊ธฐ๋ณธ์ ์œผ๋กœ ๋ฐ์ดํ„ฐ์˜ ๊ธธ์ด๋งŒํผ ์ˆœํšŒํ•ด์•ผ ๋ชจ๋‘ ์ž๊ธฐ ์ž๋ฆฌ๋ฅผ ์ฐพ์•„๊ฐ€๊ฒŒ ๋œ๋‹ค. ์•„๋ž˜์™€ ๊ฐ™์€ ๋ฐฉ๋ฒ•์œผ๋กœ ๋ฐ์ดํ„ฐ์˜ ๊ธธ์ด๋งŒํผ ์ˆœํšŒํ•œ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ์•„๋ž˜์™€ ๊ฐ™์€ ๋ฐฐ์—ด์ด ์žˆ๋‹ค. ์ž‘์€ ์ˆ˜๋ถ€ํ„ฐ ํฐ ์ˆ˜๋กœ ๋‚˜์—ดํ•œ๋‹ค๊ณ  ํ–ˆ์„ ๋•Œ, [4, 6, 3, 2, 8]; 4, 6์„ ์„œ๋กœ ๋น„๊ตํ•˜๋ฉด 4 3 ์ด๊ธฐ ๋•Œ๋ฌธ์— ๋‘ ์š”์†Œ์˜ ์œ„์น˜๊ฐ€ ๋ฐ”๋€๋‹ค. [4, 3, 6, 2, 8]; 6, 2๋ฅผ ๋น„๊ตํ•˜๋ฉด 6 > 2์ด๊ธฐ ..
Binary Search Tree Binary Tree ๋…ธ๋“œ์— ์ฐจ์ผ๋“œ๊ฐ€ ์ตœ๋Œ€ 2๊ฐœ๊นŒ์ง€ ๋ถ™๋Š” ํŠธ๋ฆฌ๋ฅผ ๋ฐ”์ด๋„ˆ๋ฆฌ ํŠธ๋ฆฌ(Binary tree)๋ผ๊ณ  ํ•œ๋‹ค. ์ด์ง„ํŠธ๋ฆฌ(Binary tree) ํŠน์ง• ๊ฐ ๋…ธ๋“œ๊ฐ€ ์ž์‹์ด ์—†๊ฑฐ๋‚˜, ํ•œ ๊ฐœ ํ˜น์€ ๋‘ ๊ฐœ์˜ ์ž์‹์„ ๊ฐ€์ง„๋‹ค ์—„๊ฒฉํ•œ ์ด์ง„ํŠธ๋ฆฌ: ๋ชจ๋“  ๋…ธ๋“œ๊ฐ€ ๋‘ ๊ฐœ์˜ ์ž์‹์„ ๊ฐ€์ง€๊ฑฐ๋‚˜ ์ž์‹์ด ์—†๋Š” ํŠธ๋ฆฌ ํฌํ™” ์ด์ง„ํŠธ๋ฆฌ: ๋ชจ๋“  ๋…ธ๋“œ๊ฐ€ ๋‘ ๊ฐœ์˜ ์ž์‹์„ ๊ฐ€์ง€๊ณ  ๋ชจ๋“  ๋ฆฌํ”„ ๋…ธ๋“œ๊ฐ€ ๊ฐ™์€ ๋ ˆ๋ฒจ์— ์žˆ๋Š” ํŠธ๋ฆฌ ์™„์ „ ์ด์ง„ํŠธ๋ฆฌ: ๋ฌด์กฐ๊ฑด ์™ผ์ชฝ์— ์ž์‹ ๋…ธ๋“œ๊ฐ€ ์žˆ๋Š” ํŠธ๋ฆฌ ํŠธ๋ฆฌ์˜ ๋†’์ด๋กœ ๊ฐ ์ด์ง„ํŠธ๋ฆฌ์˜ ๋…ธ๋“œ ๊ฐœ์ˆ˜๋ฅผ ์ถ”์ธกํ•  ์ˆ˜ ์žˆ๋‹ค. Binary Search Tree ์ด์ง„ ๊ฒ€์ƒ‰ ํŠธ๋ฆฌ๋Š” ๋…ธ๋“œ๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์™ผ์ชฝ ์ž์‹ ๋…ธ๋“œ๋Š” ๋ถ€๋ชจ ๋…ธ๋“œ๋ณด๋‹ค ์ž‘์•„์•ผ ํ•˜๊ณ  ์˜ค๋ฅธ์ชฝ ์ž์‹ ๋…ธ๋“œ๋Š” ๋ถ€๋ชจ ๋…ธ๋“œ๋ณด๋‹ค ์ปค์•ผ ํ•œ๋‹ค. DFS์™€ BFS ๋ฐ”์ด๋„ˆ๋ฆฌ ์„œ์น˜ ํŠธ๋ฆฌ๋ฅผ ์ˆœํšŒํ•˜๋Š” ๋ฐฉ๋ฒ•์—๋Š” ๊นŠ์ด ..
Tree Tree ๊ตฌ์กฐ ๋‚˜๋ฌด๋ฅผ ๋’ค์ง‘์–ด ๋†“์€ ๊ฒƒ์ฒ˜๋Ÿผ ํ•˜๋‚˜์˜ ๋…ธ๋“œ(root)๋กœ ๋ถ€ํ„ฐ ์‹œ์ž‘๋˜์–ด ์ž์‹ ๋…ธ๋“œ(child node)๋“ค์ด ๊ฐ€์ง€๋ฅผ ์น˜๋“ฏ ๋ป—์–ด ๋‚˜๊ฐ€๋Š” ๊ตฌ์กฐ์ด๋‹ค ์•„๋ž˜ ๊ทธ๋ฆผ๊ณผ ๊ฐ™์ด HTML์ด ์ข‹์€ ์˜ˆ์ด๋‹ค. ๋ฃจํŠธ๋กœ๋ถ€ํ„ฐ ์‹œ์ž‘ํ•ด์„œ ์•„๋ž˜ ์ž์‹ ๋…ธ๋“œ๋“ค์ด ๋ป—์–ด ๋‚˜๊ฐ€๋Š” ๊ตฌ์กฐ์ด๋‹ค. ํŠธ๋ฆฌ ๊ตฌ์กฐ ์šฉ์–ด ๋ฃจํŠธ(root): ๋ถ€๋ชจ๊ฐ€ ์—†๋Š” ๋…ธ๋“œ ๋ฆฌํ”„(leaf): ์ž์‹์ด ์—†๋Š” ๋…ธ๋“œ ๋‚ด๋ถ€ ๋…ธ๋“œ: ๋ฃจํŠธ๋„ ๋ฆฌํ”„๋„ ์•„๋‹Œ ๋…ธ๋“œ ์—ฃ์ง€(edge) or ๋ธŒ๋žœ์น˜(branch): ๋ถ€๋ชจ์™€ ์ž์‹์ด ์ด์–ด์ง€๋Š” ์—ฐ๊ฒฐ ์„  ํ˜•์ œ(siblings): ๋ถ€๋ชจ๊ฐ€ ๊ฐ™์€ ๋…ธ๋“œ๋“ค path: ๋ฃจํŠธ์—์„œ ์ž์‹ ๋…ธ๋“œ๊นŒ์ง€ ๊ฐ€๋Š” ๊ฒฝ๋กœ ๋…ธ๋“œ์˜ ๋†’์ด: ๋ฃจํŠธ์—์„œ ์ž์‹ ๋…ธ๋“œ ์‚ฌ์ด์˜ ์—ฃ์ง€(edge) ๊ฐœ์ˆ˜ ๋…ธ๋“œ์˜ ๊นŠ์ด: ๋ฆฌํ”„์—์„œ ํ•ด๋‹น ๋…ธ๋“œ ์‚ฌ์ด์˜ ์—ฃ์ง€(edge) ๊ฐœ์ˆ˜ ํŠธ๋ฆฌ์˜ ๋†’์ด: ๋ชจ๋“  ๋…ธ๋“œ์˜ ๋†’์ด ๊ฐ’ ์ค‘ ..