ํ‹ฐ์Šคํ† ๋ฆฌ ๋ทฐ

CS/Data Structure

[์ž๋ฃŒ๊ตฌ์กฐ] Arrays vs LinkedList

๊ฐœ๋ฐœ๊ฐœ๊ตด๐Ÿธ 2022. 3. 28. 22:08

Array ๋ฐฐ์—ด

- ๋…ผ๋ฆฌ์  ์ €์žฅ์ˆœ์„œ์™€ ๋ฌผ๋ฆฌ์  ์ €์žฅ์ˆœ์„œ๊ฐ€ ์ผ์น˜

- ํŠน์ • ์ž๋ฃŒํ˜•๋“ค์ด ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„ ์ƒ์—์„œ ์—ฐ์†์ ์œผ๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ์Œ

- Immutable ( ๋ณ€๊ฒฝ ๋ถˆ๊ฐ€๋Šฅ )

: ๊ฐ์ฒด๊ฐ€ ์ƒ์„ฑ๋œ ์ดํ›„ ๊ทธ ์ƒํƒœ๋ฅผ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์—†๋Š” ๋””์ž์ธ ํŒจํ„ด

- ์ธ๋ฑ์Šค๋กœ ์›์†Œ์— ์ ‘๊ทผํ•จ

: Random Access -> O(1)์˜ ์‹œ๊ฐ„ ๋ณต์žก๋„๋กœ ์›์†Œ์— ์ ‘๊ทผ์ด ๊ฐ€๋Šฅํ•จ

: ์‚ญ์ œ ๋˜๋Š” ์‚ฝ์ž… ๊ณผ์ •์—์„œ๋Š” ํ•ด๋‹น ์›์†Œ์— ์ ‘๊ทผํ•˜๊ณ  Shift๋ฅผ ํ•ด์„œ O(n)

: ๋ฐ์ดํ„ฐ๊ฐ€ ๋งŽ์€ ๊ฒฝ์šฐ ๋น„ํšจ์œจ์ 

- ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„ ํ™œ์šฉ์ด ์ œ์•ฝ์ 

 

LinkedList

- ๋…ผ๋ฆฌ์  ์ €์žฅ์ˆœ์„œ์™€ ๋ฌผ๋ฆฌ์  ์ €์žฅ ์ˆœ์„œ๊ฐ€ ๋‹ค๋ฅด๋‹ค

: ๋ฐ์ดํ„ฐ ๊ฒ€์ƒ‰ ์‹œ ์ฒ˜์Œ ๋…ธ๋“œ๋ถ€ํ„ฐ ์ˆœํ™˜ O(n)

- ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์ƒ์— ๋…ธ๋“œ๋“ค์ด ํฉ์–ด์ ธ ์กด์žฌํ•จ, ๊ฐ๊ฐ์˜ ๋…ธ๋“œ๊ฐ€ ์ž์‹ ์˜ ๋‹ค์Œ ๋…ธ๋“œ์˜ ์œ„์น˜๋ฅผ ์•Œ๊ณ  ์žˆ์Œ

: ์‚ฌ์šฉ์ž๋Š” ์ œ์ผ ์ฒซ ๋ฒˆ์งธ ๋…ธ๋“œ์˜ ์œ„์น˜๋งŒ ์•Œ๊ณ  ์žˆ์Œ

- ์‚ฝ์ž…, ์‚ญ์ œ ์‹œ ์›์†Œ๋ฅผ ์ฐพ๊ณ  ์ถ”๊ฐ€์ ์œผ๋กœ ์ž‘์—… ์™„๋ฃŒํ•˜๋Š”๋ฐ O(n)

: ๊ฒ€์ƒ‰, ์‚ผ์ž…, ์‚ญ์ œ ๊ณผ์ • ๋ชจ๋‘ O(n)

 

๋ฐ์ดํ„ฐ ์‚ฝ์ž… ์†๋„

- Array ๋ฐฐ์—ด

: ์ถ”๊ฐ€์ ์ธ Shift๋•Œ๋ฌธ์— ๋ฐ์ดํ„ฐ๊ฐ€ ๋งŽ์€ ๊ฒฝ์šฐ ๋น„ํšจ์œจ์ 

- LinkedList

: ์ค‘๊ฐ„ ์‚ฝ์ž…์˜ ๊ฒฝ์šฐ O(n), ์–‘ ๋์— ์‚ฝ์ž…ํ•˜๋Š” ๊ฒฝ์šฐ O(1)

: ๋ฐฐ์—ด๋ณด๋‹ค ๋น ๋ฅธ ์„ฑ๋Šฅ์„ ๊ฐ–๊ณ  ์žˆ์Œ

 

๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น

- Array

: ๋ฉ”๋ชจ๋ฆฌ์—๋Š” ์„ ์–ธํ•˜์ž ๋งˆ์ž Compile tim์— ํ• ๋‹น๋จ

: ์ •์  ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น

- LinkedList

: ๋ฉ”๋ชจ๋ฆฌ๋Š” ์ƒˆ๋กœ์šด Node๊ฐ€ ์ถ”๊ฐ€๋  ๋•Œ Runtime์— ํ• ๋‹น

: ๋™์  ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น

 

์‚ฝ์ž…๊ณผ ์‚ญ์ œ๊ฐ€ ๋นˆ๋ฒˆํ•˜๊ฒŒ ์ผ์–ด๋‚ ๋• LinkedList๋ฅผ ์‚ฌ์šฉ, ๋ฐ์ดํ„ฐ ์ ‘๊ทผํ•˜๋Š” ๊ฒƒ์ด ๋นˆ๋ฒˆํ•˜๋‹ค๋ฉด Array๋ฅผ ์‚ฌ์šฉ!

 

์ฐธ๊ณ  : https://github.com/WooVictory/Ready-For-Tech-Interview/blob/master/Data%20Structure/%5BData%20Structure%5D%20Array%20vs%20LinkedList.md

'CS > Data Structure' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[์ž๋ฃŒ๊ตฌ์กฐ] Hash(ํ•ด์‹œ)  (0) 2022.06.13