Big-O 표기법

2021. 3. 30. 23:58

(계속 업데이트 중)

Big-O 표기법

  • 알고리즘의 성능을 수학적으로 표현하는 표기법
  • 알고리즘의 시간과 공간 복잡도 표현 가능
  • 알고리즘의 러닝타임이 아닌 데이터나 사용자의 증가율에 따른 알고리즘의 성능을 예측하는 것이 목표

O(1)

  • 입력 데이터에 상관 없이 언제나 일정한 시간이 걸리는 알고리즘
  • 데이터가 아무리 증가해도 성능이 똑같음

O(n)

  • 데이터가 증가함에 따라 시간이 같은비율로 증가함
  • 예시 : for문

O(n^2)

  • 이중 for문은 시간복잡도가 n인 for가 두번 발생하므로 n * n = n^2이 된다

O(nm)

  • 자칫하면 n^2과 착각 할 수 있지만 n과 m의 배열 수가 차이나게 다르다면 nm으로 표기해줌

O(n^3)

  • 삼중 for문을 돌리는 경우

O(2^n)

  • 예시 : 피보나치 수열 (재귀함수)
  • 함수가 호출될 때 마다 2번씩 반복됨

O(m^n)

  • m개식 n번 늘어나는 알고리즘

O(log n)

  • 예시 : 이진검색
  • 함수가 호출될 때 마다 데이터가 절반씩 줄어듦

O(sqrt(n))

  • 제곱근 형식으로 데이터 찾아냄

'skill > 알고리즘' 카테고리의 다른 글

[Java] 문장 속 가장 긴 단어 찾기  (0) 2021.04.12
[Java] 대소문자변환  (0) 2021.04.12
[LeetCode]100. Same tree (Java)  (0) 2021.03.30
[LeetCode]70. Climbing Stairs (Fibonacci sequence)  (0) 2021.03.15
[LeetCode]67. Add Binary  (0) 2021.03.09

+ Recent posts