Big O 표기

Hoehenflug·2021년 7월 5일

Time complexity = O(N)

  • 배열이라면 하나씩 계속 체크
  • input Size = N -> N steps

2. Constant Time(상수시간) Complexity

Time complexity = O(1)

  • input N이 얼마가 됐든 항상 한 번이면 충분
  • 이 함수의 time complexity는 constant time(상수 시간)

3. Constant Time Complexity 2

Time complexity = O(1)

  • 같은 작업을 한 번 더 해주지만 O(2) 가 아니라, Time complexity = O(1)
  • Big O는 함수의 디테일에 관심이 없고, rough하게 이 함수가 인풋사이즈에 따라서 어떻게 동작하는지만 체크

Big O는 상수(constant)에 신경을 쓰지 않음

4. 반복문을 포함한 함수

Time complexity = O(N)

  • 각각을 프린트하는 함수 => for문으로 하나씩 돌려줌 => 선형검색과 비슷

5. Quadratic Time (2차 시간)

Time complexity = O(N^2)

  • Quadratic Time은 Nested Loops(중첩 반복) 이 있을 때 발생 : for문 안에 for문
  • Input^2 steps가 필요

6. Logarithmic Time(로그 시간) Complexity

Time complexity = O(log N)

  • Binary Search(이진 검색) 알고리즘 설명할 때 사용
  • Binary Search는 각 프로세스의 스텝을 절반으로 나눠서 진행하기 때문에, input이 double이 되어도 step은 +1밖에 증가하지 않음
  • 로그(logarithm)은 지수(exponent)의 정반대 개념
  • '32를 2로 몇번을 나눠야 1이 나올까?'라는 문제
  • BigO의 특성 상 Base는 쓰지 않기 때문에 '밑'은 사라지고, 몇 번 곱해져야 하는지만 남음

  • Logarithm은 상수보다는 느리고, 선형 검색보다는 빠름
  • Trade Off (상충 관계) : 이진 검색은 정렬되지 않은 배열엔 사용할 수 없음

7. Big O 총정리

  1. 가장 선호되는 것은 상수 시간
  2. 상수시간(constant) < 로그시간(logarithmic) < 선형시간(linear) < 지수시간(exponential) or 2차시간(quadratic)

출처 : Big O 설명 by 노마드 코더
https://www.youtube.com/watch?v=BEVnxbxBqi8

0개의 댓글