Array
๊ฐ์ฅ ๊ธฐ๋ณธ์ ์ธ ์๋ฃ๊ตฌ์กฐ
๋ ผ๋ฆฌ์ ์ ์ฅ ์์ = ๋ฌผ๋ฆฌ์ ์ ์ฅ ์์
์ธ๋ฑ์ค(index)๋ก ํด๋น ์์(element)์ ์ ๊ทผํ ์ ์๋ค. ๊ทธ๋ ๊ธฐ ๋๋ฌธ์ ์ฐพ๊ณ ์ ํ๋ ์์์ ์ธ๋ฑ์ค ๊ฐ์ ์๊ณ ์์ผ๋ฉด Big-O(1)์ ํด๋น ์์๋ก ์ ๊ทผํ ์ ์๋ค. ์ฆ random access ๊ฐ ๊ฐ๋ฅํ๋ค๋ ์ฅ์ ์ด ์๋ ๊ฒ์ด๋ค.
ํ์ง๋ง ์ญ์ ๋๋ ์ฝ์ ์ ๊ณผ์ ์์๋ ํด๋น ์์์ ์ ๊ทผํ์ฌ ์์ ์ ์๋ฃํ ๋ค(O(1)), ๋ ํ ๊ฐ์ง์ ์์ ์ ์ถ๊ฐ์ ์ผ๋ก ํด์ค์ผ ํ๊ธฐ ๋๋ฌธ์, ์๊ฐ์ด ๋ ๊ฑธ๋ฆฐ๋ค. ๋ง์ฝ ๋ฐฐ์ด์ ์์ ์ค ์ด๋ ์์๋ฅผ ์ญ์ ํ๋ค๊ณ ํ์ ๋, ๋ฐฐ์ด์ ์ฐ์์ ์ธ ํน์ง์ด ๊นจ์ง๊ฒ ๋๋ค. ์ฆ ๋น ๊ณต๊ฐ์ด ์๊ธฐ๋ ๊ฒ์ด๋ค. ๋ฐ๋ผ์ ์ญ์ ํ ์์๋ณด๋ค ํฐ ์ธ๋ฑ์ค๋ฅผ ๊ฐ๋ ์์๋ค์ shiftํด์ค์ผ ํ๋ ๋น์ฉ(cost)์ด ๋ฐ์ํ๊ณ ์ด ๊ฒฝ์ฐ์ ์๊ฐ ๋ณต์ก๋๋ O(n)๊ฐ ๋๋ค.
๊ทธ๋ ๊ธฐ ๋๋ฌธ์ Array ์๋ฃ๊ตฌ์กฐ์์ ์ญ์ ๊ธฐ๋ฅ์ ๋ํ time complexity ์ worst case ๋ O(n)์ด ๋๋ค.
์ฝ์ ์ ๊ฒฝ์ฐ๋ ๋ง์ฐฌ๊ฐ์ง์ด๋ค. ๋ง์ฝ ์ฒซ๋ฒ์งธ ์๋ฆฌ์ ์๋ก์ด ์์๋ฅผ ์ถ๊ฐํ๊ณ ์ ํ๋ค๋ฉด ๋ชจ๋ ์์๋ค์ ์ธ๋ฑ์ค๋ฅผ 1 ์ฉ shift ํด์ค์ผ ํ๋ฏ๋ก ์ด ๊ฒฝ์ฐ๋ O(n)์ ์๊ฐ์ ์๊ตฌํ๊ฒ ๋๋ค.
Linked List
๊ฐ๊ฐ์ ์์๋ค์ ์๊ธฐ ์์ ๋ค์์ ์ด๋ค ์์์ธ์ง๋ง์ ๊ธฐ์ต
์๊ธฐ ๋ค์์ ์ด๋ค ์์์ธ์ง ๊ธฐ์ตํด๋๊ธฐ ๋๋ฌธ์ ๊ทธ ๋ถ๋ถ๋ง ๋ค๋ฅธ ๊ฐ์ผ๋ก ๋ฐ๊ฟ์ฃผ๋ฉด ์ญ์ ์ ์ฝ์ ์ O(1) ๋ง์ ํด๊ฒฐ๊ฐ๋ฅ!
ํ์ง๋ง ์ํ๋ ์์น์ ์ฝ์ ์ ํ๊ณ ์ ํ๋ฉด ์ํ๋ ์์น๋ฅผ Search ๊ณผ์ ์ ์์ด์ ์ฒซ๋ฒ์งธ ์์๋ถํฐ ๋ค ํ์ธํด๋ด์ผ ํ๋ค๋ ๊ฒ์ด๋ค. Array ์๋ ๋ฌ๋ฆฌ ๋ ผ๋ฆฌ์ ์ ์ฅ ์์์ ๋ฌผ๋ฆฌ์ ์ ์ฅ ์์๊ฐ ์ผ์นํ์ง ์๊ธฐ ๋๋ฌธ์ด๋ค. ์ด๊ฒ์ ์ผ๋จ ์ฝ์ ํ๊ณ ์ ๋ ฌํ๋ ๊ฒ๊ณผ ๋ง์ฐฌ๊ฐ์ง์ด๋ค. ์ด ๊ณผ์ ๋๋ฌธ์, ์ด๋ ํ ์์๋ฅผ ์ญ์ ๋๋ ์ถ๊ฐํ๊ณ ์ ํ์ ๋, ๊ทธ ์์๋ฅผ ์ฐพ๊ธฐ ์ํด์ O(n)์ ์๊ฐ์ด ์ถ๊ฐ์ ์ผ๋ก ๋ฐ์ํ๊ฒ ๋๋ค.
๊ฒฐ๊ตญ linked list ์๋ฃ๊ตฌ์กฐ๋ search ์๋ O(n)์ time complexity ๋ฅผ ๊ฐ๊ณ , ์ฝ์ , ์ญ์ ์ ๋ํด์๋ O(n)์ time complexity ๋ฅผ ๊ฐ๋๋ค.
๊ทธ๋ ์ง๋ง Linked List ๋ Tree ๊ตฌ์กฐ์ ๊ทผ๊ฐ์ด ๋๋ ์๋ฃ๊ตฌ์กฐ์ด๋ฉฐ, Tree ์์ ์ฌ์ฉ๋์์ ๋ ๊ทธ ์ ์ฉ์ฑ์ด ๋๋ฌ๋๋ค.
1. ๋ฐ์ดํฐ์ ๋ํ ์ ๊ทผ ์๋ | Array๊ฐ ์ข๋ค. * ๋ฐฐ์ด์ index๋ง ์๋ค๋ฉด O(1)์ ์ ๊ทผ๊ฐ๋ฅ ์ฐ๊ฒฐ๋ฆฌ์คํธ๋ ์ต์ ํ ๋ฒ์ ๋ฆฌ์คํธ๋ฅผ ์ํํ์ฌ์ผ ํ๋ฏ๋ก O(n) |
2. ๋ฐ์ดํฐ ์ฝ์ ์๋ | ๊ฒฝ์ฐ์ ๋ฐ๋ผ ๋ค๋ฅด์ง๋ง ์ ๋ฐ์ ์ผ๋ก Linked List๊ฐ ๋ซ๋ค. * linked list๋ ์ด๋ ๊ณณ์ ์ฝ์ ํ๋์ง O(n) array๋ ๋ฐ์ดํฐ๋ฅผ ์ค๊ฐ์ด๋ ๋งจ ์์ ์ฝ์ ํ ๊ฒฝ์ฐ ๋ฐ์ดํฐ ํ์นธ์ฉ ๋ฏธ๋ค์ผ ํ๊ณ ๊ณต๊ฐ์ด ๋ถ์กฑํ๋ฉด realloc() ๋๋ ์๋ก์ด ํ ๋นํ์ฌ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ ํ์ฅ ํ์ ๋ง์ฝ array์ ๊ณต๊ฐ์ด ๋ง์ด ๋จ์์๊ณ ๋งจ ๋์ ์ฝ์ ํ๋ค๋ฉด, array ์ฝ์ ์๋ ์ญ์ O(1) ๊ฐ๋ฅ |
3. ๋ฐ์ดํฐ ์ญ์ ์๋ | ๊ฒฝ์ฐ์ ๋ฐ๋ผ ๋ค๋ฅด์ง๋ง ์ ๋ฐ์ ์ผ๋ก Linked List๊ฐ ๋ซ๋ค. |
๊ฒฐ๋ก | ์ฝ์
์ญ์ ๊ฐ ๋ฒ๋ฒํ ์ด๋ฃจ์ด์ง๋ค๋ฉด, Linked List ์ฌ์ฉ์ด ์ข์. ์ด๋ฏธ ๋ง๋ค์ด์ง ๊ตฌ์กฐ์์ ๋ฐ์ดํฐ์ ์ ๊ทผ๋ง ํ์ํ๋ฉด Array์ด ์ข์. |
์ ๋ฐ์ ์ผ๋ก ๋ฆฌ์คํธ์ ์ฌ์ฉ์ด ํจ์ฌ ์ข์๋ณด์ธ๋ค.
ํ์ง๋ง ์ผ๋ฐ์ ์ธ ์๊ณ ๋ฆฌ์ฆ ๋ฌธ์ ๋ฅผ ํ์ดํ ๋ ๋ฆฌ์คํธ๋ณด๋ค ๋ฐฐ์ด์ด ํจ์ฌ ๋น ๋ฅด๊ณ ์ข๋ค.
์๋ํ๋ฉด ๋๋ถ๋ถ์ ์๊ณ ๋ฆฌ์ฆ ์ฐ์ต๋ฌธ์ ๋ค์ ๊ทธ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ ๋ฒ์๋ฅผ ์ฃผ์ด์ง๊ธฐ ๋๋ฌธ์ ๋ฐฐ์ด ์ ์ธ์ ๊ทธ MAX์น๋ก ์ก์ ์ ์๋ค๋ฉด, ํจ์ฌ ๋ ํธ๋ฆฌํ๊ณ ๋ฆฌ์คํธ์๋ ์ ํ ๋ค๋ฅธ ์๋๋ฅผ ๋ณด์ธ๋ค.
๋ฆฌ์คํธ์ ์ ๋ ฅ์ ์ถ๊ฐ ๊ณผ์ ๋ง๋ค ๋ฉ๋ชจ๋ฆฌ์ ํ ๋น์ด ์ผ์ด๋๊ณ ์ญ์ ์์๋ ๋ฉ๋ชจ๋ฆฌ์ ํด์ ๊ฐ ์ผ์ด๋๋ค. ๋ฉ๋ชจ๋ฆฌ์ ํ ๋น๊ณผ ํด์ ๋ O() ์๊ฐ์ผ๋ก ๋ฐ์ง์ง ์์ง๋ง, ์ด๋ฐ ์์คํ ์ฝ(System Call)์ ์ฌ์ฉํ๋ ๋ฌธ๊ตฌ๋ ์๊ฐ์์๊ฐ ๊ฝค ๊ฑธ๋ฆฐ๋ค.
๋ฐฐ์ด์ด๋ ๋ฆฌ์คํธ์ด๋ ๋จ์ํ ์ด๋ก ์ ๋ ๋์ ์๊ธฐ๊ฐ ๋ฌด์์ ํ๋ ค๋์ง, ๊ทธ ๋ชฉ์ ์ ๋ฐ๋ผ ์ ํํ๋ ๊ฒ์ด ์ข๋ค.