๐ก Array vs Liked list
Array๋ ๋ฉ๋ชจ๋ฆฌ ์์์ ์ฐ์์ ์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ ์๋ฃ๊ตฌ์กฐ์ด๋ค
Linked List๋ ๋ฉ๋ชจ๋ฆฌ์์์๋ ์ฐ์์ ์ด์ง ์์ง๋ง, ๋ ผ๋ฆฌ์ ์ฐ์์ฑ์ ์ ์งํ๋ค
๊ทธ๋์ ๊ฐ operation์ ์๊ฐ๋ณต์ก๋๊ฐ ๋ค๋ฅด๋ค.
operation | Array time complexity | Linked List time complexity |
---|---|---|
access | O(1) | O(n) |
search | O(1) | O(n) |
insertion | O(n) | O(1) |
deletion | O(n) | O(1) |
์ ๋ฆฌํ ์ฌ์ฉ๋ฐฉ๋ฒ
Array - ์ผ๋ง๋งํผ์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ ์ง ๋ฏธ๋ฆฌ ์๊ณ ์๊ณ , ์กฐํ๊ฐ ์ฆ๋ค, ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ ๊ฒ ์ฌ์ฉํ๋๊ฒ ์ค์ํ๋ค
Linked list - ๋ช๊ฐ์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ ์ง ๋ถํ์คํ๊ณ ์ฝ์ ์ญ์ ๊ฐ ์ฆ๋ค
๐ก ์กฐํ(lookup)
Array๋ ๋ฉ๋ชจ๋ฆฌ์์ ์ฐ์์ ์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๊ธฐ ๋๋ฌธ์
์ ์ฅ๋ ๋ฐ์ดํฐ์ ์ฆ์์ ๊ทผ(radom access O(1))ํ ์ ์์
๋ฐ๋ฉด์ Linked List๋ ๋ฉ๋ชจ๋ฆฌ์ ๋ถ์ฐ์์ ์ธ ๋ฐ์ดํฐ ์ ์ฅ ๋ฐฉ๋ฒ์ ํํ์ฌ
์์ฐจ ์ ๊ทผ(sequetial Access)๋ง์ด ๊ฐ๋ฅ, ์ฆ ํน์ index์ ๋ฐ์ดํฐ๋ฅผ ์กฐํํ๊ธฐ ์ํด O(n)์ ์๊ฐ์ด ๊ฑธ๋ฆฌ๊ฒ ๋จ
๐ก ์ฝ์ /์ญ์ (insert/delete)
Array์ ๊ฒฝ์ฐ ๋งจ ๋ง์ง๋ง ์์๋ฅผ ์ถ๊ฐ/์ญ์ ํ๋ฉด ์๊ฐ๋ณต์ก๋๊ฐ O(1)์ด๋ค
ํ์ง๋ง ๋งจ ๋ง์ง๋ง ์์๊ฐ ์๋ ์ค๊ฐ์ ์๋ ์์๋ฅผ ์ฝ์ /์ญ์ ํ๋ฉด
ํด๋น ์์๋ณด๋ค ํฐ ์ธ๋ฑ์ค์ ์์๋ค์ ํ ์นธ์ฉ shift ํด์ค์ผ ํ๋ ๋น์ฉ์ด ๋ฐ์ํจ
๋ฐ๋ผ์ ์ด ๊ฒฝ์ฐ์๋ ์๊ฐ๋ณต์ก๋๊ฐ O(n)์ด ๋จ
Linked List์ ๊ฒฝ์ฐ ์ด๋ ์์๋ฅผ ์ถ๊ฐ/์ญ์ ํ๋๋ผ๋
node์ Next Address์ ์์ ๋ง์ด ์ผ์ด๋๊ธฐ ๋๋ฌธ์ shiftํ ํ์ ์์ด O(1)์
ํ์ง๋ง Linked list์ ๊ฒฝ์ฐ ์ถ๊ฐ/์ญ์ ๋ฅผ ํ๋ ค๋ index๊น์ง ๋๋ฌํ๋๋ฐ
O(n)์ ์๊ฐ์ด ๊ฑธ๋ฆฌ๊ธฐ ๋๋ฌธ์ ์ค์ง์ ์ผ๋ก Linked List๋ ์ถ๊ฐ/์ญ์ ์์
O(n)์ ์๊ฐ์ด ๊ฑธ๋ฆฐ๋ค๊ณ ๋ณผ ์ ์์
Memory
Array์ ์ฃผ๋ ์ฅ์ ์ ๋ฐ์ดํฐ ์ ๊ทผ๊ณผ append๊ฐ ๋น ๋ฅด๋ค๋ ๊ฒ
ํ์ง๋ง ๋ฉ๋ชจ๋ฆฌ ๋ญ๋น๋ผ๋ ๋จ์ ์ด ์๋ค
๋ฐฐ์ด์ ์ ์ธ์์ fixed size๋ฅผ ์ค์ ํ์ฌ ๋ฉ๋ชจ๋ฆฌ ํ ๋น์ ํด์ค
์ฆ ๋ฐ์ดํฐ๊ฐ ์ ์ฅ๋์ง ์๋๋ผ๋ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ ์ ํ๊ณ ์๊ธฐ ๋๋ฌธ์ด๋ค
์ด์ ๋ฐ๋ฉด์ Linked List๋ runtime์ค์๋ size๋ฅผ ๋๋ฆฌ๊ณ ์ค์ผ ์ ์๋ค
๋ฐ๋ผ์ initial size๋ฅผ ๊ณ ๋ฏผํ ํ์ ์๊ณ ,
ํ์ํ ๋งํผ memorry allocation์ ํ์ฌ ๋ฉ๋ชจ๋ฆฌ ๋ญ๋น๊ฐ ์๋ค
๋ฐ๋ฉด์ Linked List๋ value์ธ์ Next Address๋ฅผ ์ถ๊ฐ๋ก ์ ์ฅํ๊ธฐ ๋๋ฌธ์
๋ฐ์ดํฐ ๊ฐ์ด Array๋ณด๋ค ๋ฌด๊ฒ๋ค
memory allocation
compile
๋จ๊ณ์์ (๋ฏธ๋ฆฌ fixed-size ์ ์ธ)
memory allocation์ด ์ผ์ด๋๋ค ์ด๋ฅผ Static Memory Allocation ์ด๋ผํจ
์ด ๊ฒฝ์ฐ Stack memory์์ญ์ ํ ๋น์ด ๋จ
runtime
๋จ๊ณ์์ ์๋ก์ด node๊ฐ ์ถ๊ฐ๋๋ ๊ฒฝ์ฐ memory allocation์ด ์ผ์ด๋๋ฉฐ
์ด๋ฅผ Dynamic Memory Allocation์ด๋ผ๊ณ ๋ถ๋ฅธ๋ค
์ฆ ์ฌ์ฉ์์ ๋์ ํ ๋น์ด ๊ฐ๋ฅํ๊ธฐ ๋๋ฌธ์ Heap๋ฉ๋ชจ๋ฆฌ ์์ญ์ ํ ๋น์ด ๋๋ค