✍️
TIL
  • TIL
  • react
    • react 16.3 이후 라이프 싸이클
    • 함수형 컴포넌트 vs 클래스 컴포넌트
    • React의 장점
    • 기본문법
    • Flow Diagram
    • redux-saga
    • nextjs
    • mobx
    • 리액트는 어떻게 동작할까?
  • data-structure
    • 이진 검색 트리(binary search tree)
    • HashTable
    • Tree
    • 트라이(Trie)
    • 선형 구조 vs 비선형 구조
    • 연결 리스트(linked-list)
    • Queue
    • Graph
    • Heap
    • Stack
  • web
    • 웹 브라우저의 동작 원리
    • Basic
    • Webpack이란?
    • rendering
    • npm
    • babel
  • graphQL
    • Query
    • Mutation
    • Introduction
  • algorithm
    • big-o
    • 버블 정렬(bubble sort)
    • 힙 정렬(heap sort)
    • 선택 정렬(selection sort)
    • 퀵 정렬(quick sort)
    • 백트래킹 알고리즘
    • 삽입 정렬(insertion sort)
    • 계수 정렬(counting sort)
    • 다엑스트라 알고리즘
    • 이진 탐색
    • 합병 정렬(merge-sort)
    • 동적 계획법(Dynamic programming)
  • web-security
    • XSS(Cross Site Scripting)
    • CSRF(Cross-site request forgery)
    • Tabnabbing
  • javaScript
    • dom
    • 자바스크립트 성능 최적화
    • Event Loop
    • Snippets
    • javaScript
  • programming-paradigm
    • Object Oriented Programming
    • 함수형 프로그래밍
    • 구조적 프로그래밍
  • computer-science
    • Process vs Thread
    • 비트 연산자
    • 그레이 코드
  • vue
    • Vue
  • design-pattern
    • MVP pattern
    • Flux
    • 아토믹 디자인
    • MVVM pattern
    • MVC pattern
  • css
    • css
    • Grid
    • css-methodologies
    • FlexBox
  • html
    • html
  • regExp
    • regExp
  • git
    • Git-flow
Powered by GitBook
On this page
  • 시간 복잡도
  • 예시
  • 공간 복잡도
  • 예시
  • Big-O 표기법의 종류

Was this helpful?

  1. algorithm

big-o

시간 복잡도

시간 복잡도는 수행되는 연산의 수를 나타냅니다.

알고리즘에서 중요하지 않는 값들은 최대한 무시합니다.(상수항 무시, 영향력 없는 항 무시)

예시

function (n) {
  return n + n
}
// 덧셈 연산 1개 이므로 O(1)
function (n) {
  for (let i = 1; i <= n; i++) {
    console.log(i)
  }
  for (let j = 1; j <= n; j++) {
    console.log(j)
  }
}
// 대입연산 1개가 n만큼 실행되는 구문이 2개 있으므로 O(2n)이지만 상수항을 무시하므로 O(n)
function (n) {
  for (let i = 1; i <= n; i++) {
    for (let j = 1; j <= n; j++) {
      console.log(j)
    }
  }
}
// 대입연산 1개가 n^2만큼 실행되므로 O(n^2)

공간 복잡도

공간 복잡도는 알고리즘이 메모리를 얼마나 필요로 하는지를 나타냅니다.

예시

function (n) {
    let result = 1;
    for (let i = 1; i <= n; i++) {
        result = result * i;
    }
    return result;
}
// n 값에 상관없이 n과 i 그리고 result 변수가 메모리에 쌓이므로 O(1)
function factorial(n) {
  if (n > 1) {
    return n * factorial(n - 1);
  }
  return 1;
}
// n의 값만큼 메모리에 factorial(n), factorial(n - 1), factorial(n -2), ... 값이 메모라에 쌓이므로 O(n)

Big-O 표기법의 종류

O(1) < O(log n) < O(n) < O(n log n) < O(n²) < O(2ⁿ) < O(n!) < O(nⁿ)

PreviousalgorithmNext버블 정렬(bubble sort)

Last updated 5 years ago

Was this helpful?