Skip to content

Latest commit

ย 

History

History
51 lines (39 loc) ยท 3.55 KB

File metadata and controls

51 lines (39 loc) ยท 3.55 KB

Array vs Linked List

Array

์ˆœ์ฐจ์ ์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๋Š” ์ž๋ฃŒ๊ตฌ์กฐ

  • ์ธ๋ฑ์Šค๋ฅผ ํ†ตํ•ด ํ•ด๋‹น ์›์†Œ์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋‹ค. (O(1))
    • ์ฆ‰ random access๊ฐ€ ๊ฐ€๋Šฅํ•˜๋‹ค.
  • ๊ณ ์ •๋œ ํฌ๊ธฐ๋ฅผ ๊ฐ–๋Š” ๊ฐ™์€ ์ž๋ฃŒํ˜•์˜ ์›์†Œ๋“ค์ด ์—ฐ์†์ ์ธ ํ˜•ํƒœ๋กœ ๊ตฌ์„ฑ๋œ ์ž๋ฃŒ๊ตฌ์กฐ
    • cache hit rate๊ฐ€ ๋†’๋‹ค.
    • ๋ฐฐ์—ด์„ ์ƒ์„ฑํ•˜๋ ค๋ฉด ๋ฉ”๋ชจ๋ฆฌ ์ƒ์— ์—ฐ์†ํ•œ ๊ตฌ๊ฐ„์„ ํ• ๋‹นํ•ด์•ผํ•ด์„œ ํ• ๋‹น์— ์ œ์•ฝ์ด ๊ฑธ๋ฆด ์ˆ˜ ์žˆ๋‹ค.
    • ์—ฐ์†๋œ ๋ฉ”๋ชจ๋ฆฌ ์ƒ์— ์›์†Œ๋“ค์ด ์กด์žฌํ•˜๋ฏ€๋กœ ์ฒ˜์Œ ๋ฐฐ์—ด์„ ์„ ์–ธํ•œ ํฌ๊ธฐ๋งŒํผ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜์ง€ ์•Š๋Š”๋‹ค๋ฉด ๋ฉ”๋ชจ๋ฆฌ ๋‚ญ๋น„๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.
  • Array์˜ ์ค‘๊ฐ„ ์š”์†Œ๋ฅผ ์‚ญ์ œ/์‚ฝ์ž… ํ•˜๋Š” ๊ฒฝ์šฐ, ๋’ค์— ์žˆ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์‚ญ์ œ/์‚ฝ์ž… ํ•œ ์š”์†Œ ์ˆ˜ ๋งŒํผ shiftํ•ด์ค˜์•ผ ํ•˜๋Š” ๋น„์šฉ์ด ๋ฐœ์ƒํ•œ๋‹ค. (O(n))

Dynamic Array ๋ฌธ์ œ

๋ฐ์ดํ„ฐ๋ฅผ ์ƒˆ๋กœ ์ถ”๊ฐ€ํ•  ๋•Œ Resizing ๋ฌธ์ œ(๋ฉ”๋ชจ๋ฆฌ์˜ ์‚ฌ์ด์ฆˆ๋ฅผ ๋‹ค์‹œ ์กฐ์ •ํ•˜๋Š” ๋ฌธ์ œ)๊ฐ€ ์ƒ๊ธธ ์ˆ˜ ์žˆ๋‹ค. - ๊ธฐ์กด์˜ ๋ฐฐ์—ด์€ ๊ทธ๋Œ€๋กœ ๋‘๊ณ  - ์ƒˆ๋กœ์šด ๊ธธ์ด๋กœ ์ง€์ •๋œ ๋ฐฐ์—ด์„ ๋”ฐ๋กœ ํ• ๋‹น ํ›„ - ์ˆœ์ฐจ์ ์œผ๋กœ ๋ฐ์ดํ„ฐ์˜ ๋ณต์‚ฌ๋ฅผ ์ง„ํ–‰ํ•˜๊ณ  - ๊ธฐ์กด์˜ ๋ฐฐ์—ด์„ ์‚ญ์ œ

List

์ˆœ์„œ๊ฐ€ ์žˆ๋Š” ๋ฐ์ดํ„ฐ์˜ ๋ชจ์ž„์ด๋‹ค. ๋‹ค๋ฅธ ๋ง๋กœ๋Š” ์‹œํ€€์Šค(sequence)๋ผ๊ณ ๋„ ๋ถ€๋ฅธ๋‹ค.

ArrayList

๋ฐฐ์—ด์„ ์ด์šฉํ•ด์„œ ๋ฆฌ์ŠคํŠธ๋ฅผ ๊ตฌํ˜„ํ•œ ๊ฒƒ์„ ์˜๋ฏธํ•œ๋‹ค. ์žฅ์ : ๋‚ด๋ถ€์ ์œผ๋กœ ๋ฐฐ์—ด์„ ์‚ฌ์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ธ๋ฑ์Šค๋ฅผ ์ด์šฉํ•ด์„œ ์ ‘๊ทผํ•˜๋Š” ๊ฒƒ์ด ๋น ๋ฅด๋‹ค. ๋‹จ์ : ๋ฐ์ดํ„ฐ์˜ ์ถ”๊ฐ€์™€ ์‚ญ์ œ๊ฐ€ ๋А๋ฆฌ๋‹ค. + Dynamic Array ๋ฌธ์ œ

LinkedList

๋ฐฐ์—ด์€ ๋ฏธ๋ฆฌ ํŠน์ •ํ•œ ์—ฐ๊ฒฐ๋œ ๊ณต๊ฐ„์„ ํ™•๋ณดํ•˜๊ณ  ๋ฐ์ดํ„ฐ๋ฅผ ์“ฐ๊ณ  ์žˆ๋Š” ์ž๋ฃŒ๊ตฌ์กฐ์ด๊ณ , ๋งํฌ๋“œ ๋ฆฌ์ŠคํŠธ๋Š” ํ•„์š”ํ•  ๋•Œ ๋งˆ๋‹ค ๋ฐ์ดํ„ฐ๋ฅผ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ๋Š” ๊ตฌ์กฐ์ด๋‹ค. ๋ฐฐ์—ด์˜ ๋‹จ์ ์„ ๊ทน๋ณตํ•œ ์ž๋ฃŒ๊ตฌ์กฐ๊ฐ€ ๋งํฌ๋“œ ๋ฆฌ์ŠคํŠธ๋ผ๊ณ  ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

  • ๊ฐ ๋…ธ๋“œ๋Š” ์—ฐ์†๋œ ๊ณต๊ฐ„์— ์ €์žฅ๋˜์–ด ์žˆ์ง€ ์•Š๊ณ  ๋ฉ”๋ชจ๋ฆฌ์˜ ์—ฌ๋Ÿฌ ๋ถ€๋ถ„์— ๋ถ„ํฌ๋˜์–ด ์žˆ๋‹ค.
    • ์ˆœ์ฐจ์„ฑ์„ ๋ณด์žฅํ•˜์ง€ ๋ชปํ•˜๊ธฐ ๋•Œ๋ฌธ์— spacial locality ๋ณด์žฅ์ด ๋˜์ง€ ์•Š์•„ cache hit๊ฐ€ ์–ด๋ ต๋‹ค.
  • ๊ฐ ๋…ธ๋“œ์— ๋‹ค์Œ ๋…ธ๋“œ์˜ ์ฃผ์†Œ๋ฅผ ์ €์žฅํ•จ์œผ๋กœ์จ ๋‹ค์Œ ๋…ธ๋“œ๋ฅผ ํƒ์ƒ‰ํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ๋™์ ์œผ๋กœ ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ์ด ๊ฐ€๋Šฅํ•˜๋‹ค.
  • ์ˆœ์ฐจ ์ ‘๊ทผ ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์–ด๋–ค ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ์ฐพ๊ธฐ ์œ„ํ•ด์„œ๋Š” ์ฒ˜์Œ๋ถ€ํ„ฐ ์ˆœ์ฐจ์ ์œผ๋กœ ํƒ์ƒ‰ํ•ด์•ผ ํ•œ๋‹ค. (O(n))
  • ์‚ฝ์ž…/์‚ญ์ œ: O(1)
  • ์›ํ•˜๋Š” ๋…ธ๋“œ์— ์ ‘๊ทผ + ์‚ฝ์ž…/์‚ญ์ œ: O(n)
Array vs LinkedList - Array๋Š” Random Access๋ฅผ ์ง€์›ํ•œ๋‹ค. ์š”์†Œ๋“ค์„ ์ธ๋ฑ์Šค๋ฅผ ํ†ตํ•ด ์ง์ ‘ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋‹ค. ๋”ฐ๋ผ์„œ ํŠน์ • ์š”์†Œ์— ์ ‘๊ทผํ•˜๋Š” ์‹œ๊ฐ„ ๋ณต์žก๋„๋Š” O(1)์ด๋‹ค. ๋ฐ˜๋ฉด Linkedlist๋Š” Sequential Access๋ฅผ ์ง€์›ํ•œ๋‹ค. ์–ด๋–ค ์š”์†Œ๋ฅผ ์ ‘๊ทผํ•  ๋•Œ ์ˆœ์ฐจ์ ์œผ๋กœ ๊ฒ€์ƒ‰ํ•˜๋ฉฐ ์ฐพ์•„์•ผ ํ•œ๋‹ค. ๋”ฐ๋ผ์„œ ํŠน์ • ์š”์†Œ์— ์ ‘๊ทผํ•  ๋•Œ ์‹œ๊ฐ„ ๋ณต์žก๋„๋Š” O(N)์ด๋‹ค.
  • ์ €์žฅ ๋ฐฉ์‹๋„ ๋ฐฐ์—ด์—์„œ ์š”์†Œ๋“ค์€ ์ธ์ ‘ํ•œ ๋ฉ”๋ชจ๋ฆฌ ์œ„์น˜์— ์—ฐ์ด์–ด ์ €์žฅ๋œ๋‹ค. ๋ฐ˜๋ฉด Linkedlist์—์„œ๋Š” ์ƒˆ๋กœ์šด ์š”์†Œ์— ํ• ๋‹น๋œ ๋ฉ”๋ชจ๋ฆฌ ์œ„์น˜ ์ฃผ์†Œ๊ฐ€ linkedlist์˜ ์ด์ „ ์š”์†Œ์— ์ €์žฅ๋œ๋‹ค.

  • ๋ฐฐ์—ด์—์„œ ์‚ฝ์ž…๊ณผ ์‚ญ์ œ๋Š” O(N)์ด ์†Œ์š”๋˜์ง€๋งŒ, Linkedlist์—์„œ ์‚ฝ์ž…๊ณผ ์‚ญ์ œ๋Š” O(1)์ด ์†Œ์š”๋œ๋‹ค.

  • ๋ฐฐ์—ด์—์„œ ๋ฉ”๋ชจ๋ฆฌ๋Š” ์„ ์–ธ ์‹œ ์ปดํŒŒ์ผ ํƒ€์ž„์— ํ• ๋‹น์ด ๋œ๋‹ค. (์ •์  ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น) ๋ฐ˜๋ฉด Linkedlist์—์„œ๋Š” ์ƒˆ๋กœ์šด ์š”์†Œ๊ฐ€ ์ถ”๊ฐ€๋  ๋•Œ ๋Ÿฐํƒ€์ž„์— ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํ• ๋‹นํ•œ๋‹ค. (๋™์  ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น)

  • ๋ฐฐ์—ด์€ Stack ์„น์…˜์— ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น์ด ์ด๋ฃจ์–ด์ง„๋‹ค. ๋ฐ˜๋ฉด Linkedlist๋Š” Heap ์„น์…˜์— ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น์ด ์ด๋ฃจ์–ด์ง„๋‹ค.