๋ฐ์ํ
๐ ๋น ์ค(Big O) - ์๊ฐ๋ณต์ก๋
๐ต ์๊ฐ ๋ณต์ก๋๋?
์ฝ๊ฒ ๋งํด ์๊ณ ๋ฆฌ์ฆ์ ์คํ์๋ ๊ณ์ฐ์ด๋ค. - ์ต์ ์ ์คํ ์๊ฐ์ ๊ณ์ฐ
์๊ณ ๋ฆฌ์ฆ์ ํด๊ฒฐํ๋ค ๋ณด๋ฉด ์๊ฐ์ ๋ํด์ ์ ๊ฒฝ์ด ์ฐ์ผ ๊ฒ์ด๋ค.
๋ค๋ฅผ ์ฌ๋์ ํ์ด์ ๋น๊ตํ๋ค๋์ง, ์๊ฐ์ด๊ณผ๊ฐ ๋ฐ์ํ๋ค๋์ง...
์๊ณ ๋ฆฌ์ฆ์ ํด๊ฒฐํ๋ ๋ฐฉ๋ฒ์ ๋ค์ํ๋ค. ๊ทธ๋ฌ๋ฏ๋ก ์ด๋ค ์๊ณ ๋ฆฌ์ฆ์ด ๋ ํจ์จ์ ์ธ์ง ๋ถ์ํ๊ธฐ ์ํด ์๊ฐ ๋ณต์ก๋๋ฅผ ๊ณ์ฐํด์ผ ํ๋ค.
๋ณต์ก๋์๋
- ์๊ฐ ๋ณต์ก๋ - ์๊ณ ๋ฆฌ์ฆ ์คํ ์๋
- ๊ณต๊ฐ ๋ณต์ก๋ - ๋ฉ๋ชจ๋ฆฌ ํฌ๊ธฐ(์ฌ์ฉ๋)
์ด ์์ง๋ง ๋ณดํต์ ์๊ฐ ๋ณต์ก๋๋ฅผ ๋ณธ๋ค.
๐ต ๋น ์ค ํ๊ธฐ๋ฒ
- ์ ๋ ฅ n์ ๋ฐ๋ผ ๊ฒฐ์ ๋๋ ์๊ฐ ๋ณต์ก๋ ํจ์
- O(1), O(logn), O(n), O(nlogn), O(n^2), O(2^n) ๋ฑ์ด ์๋ค.
- ์์ O(1): ๋ฐ์ดํฐ ์์ ์๊ด์์ด ์ฐ์ฐํ์ ๊ณ ์
- ๋ก๊ทธ O(logn): ๋ฐ์ดํฐ ์ ์ฆ๊ฐ์จ์ ๋นํด ์ฐ์ฐํ์ ์ฆ๊ฐ์จ์ด ๋ฎ์
- ์ ํ O(n): ๋ฐ์ดํฐ ์์ ์ฐ์ฐํ์๊ฐ ๋น๋ก
- ์ ํ๋ก๊ทธ O(nlogn): ๋ฐ์ดํฐ ์์ ๋๋ฐฐ ์กฐ๊ธ ๋๊ฒ ์ฐ์ฐํ์ ๋น๋ก
- ์ ๊ณฑ O(n^2): ์ฃผ๋ก ๋ฐ๋ณต๋ฌธ์ด ์ค์ฒฉ๋ ๋ ๋ฐ์
- ์ ๋ ฅ์ ํฌ๊ธฐ(n)์ด ์์ ๋๋ ํฌ๊ฒ ์๊ด์ด ์์ง๋ง n์ด ์ปค์ง์ ๋ฐ๋ผ ๊ธฐํ๊ธ์์ ์ผ๋ก ์๊ฐ ๋ณต์ก๋๊ฐ ์ปค์ง๋ค.
๐ต ๋น ์ค ๋ฒ์น ๊ณ์ฐ
- ๊ณ์ ๋ฒ์น: ์ ๋ ฅ ํฌ๊ธฐ๊ฐ ํด ๋ ๊ณ์ ๋ฌด์ ๊ฐ๋ฅ O(2n) = O(n), O(n + 2) = O(n)
- ํฉ ๋ฒ์น: ๋ํ ์ ์๋ค. O(n) + O(5n) = O(6n)
- ๊ณฑ ๋ฒ์น: ๊ณฑํ ์ ์๋ค. O(n) * O(5n) = O(5n^2)
์ํฅ๋ ฅ์ด ์๋ ํญ์ ๋ฌด์๊ฐ๋ฅ, ๊ฐ์ฅ ํฐ ์ง์๋ง์ ํ๊ธฐ, ์ต์ ์ ์๋๋ฆฌ์ค ๊ฐ์
ex) O(n^2 + 10n + 10) => O(n^2)
๋ฐ์ํ
'CS > Algorithm' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
ํต ์ ๋ ฌ(quick sort) (1) | 2020.09.24 |
---|---|
์ฝ์ ์ ๋ ฌ(insertion sort) (0) | 2020.09.23 |
์ ํ ์ ๋ ฌ(selection sort) (0) | 2020.09.22 |
๋ฒ๋ธ ์ ๋ ฌ(bubble sort) (0) | 2020.09.21 |
์ต์ ์ ์ฅ ํธ๋ฆฌ(Minimum Spanning Tree) (2) | 2020.08.12 |