Notice
Recent Posts
Recent Comments
Link
«   2025/07   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

유댕이의 개발공부일지

<TIL 20.06.23> Time Complexity( Big-O ) 본문

TIL

<TIL 20.06.23> Time Complexity( Big-O )

유댕2 2020. 6. 23. 17:04

Time Complexity(시간 복잡도)

  • 알고리즘의 효율성을 뜻한다.
  • 알고리즘을 구성하는 명령어들이 몇 번이나 실행되었는지(연산의 실행 횟수)이다.

BIg-O표기법

  • 알고리즘의 시간적인 측면과 공간(메모리)적인 측면으로써의 효율성을 나타낸다.

BIg-O표기법 특징

1. 상수항 무시하기 

  O(n+10)은 O(n)으로 표기한다.

 

2. 계수 무시하기  

  O(10n)은 O(n)으로 표기한다

 

3. 영향도 큰 부분만 나타내기

  O(n^2 + n)은 O(n^2)으로 표기한다

 

BIg-O표기법 종류

▶  O(1) : 입력 데이터의 크기와 상관없이 언제나 일정한 시간이 걸리는 알고리즘 (Constant Time)   

  

  • 가장 빠른 시간 복잡도를 가진다.
  • 입력되는 데이터양과 상관없이 일정한 실행 시간을 가진다.
  • 알고리즘이 문제를 해결하는데 오직 한 단계만 거친다.

 

O(n): 입력 데이터의 크기에 비례해서 처리시간에 걸리는 알고리즘 (Linear Time)

  • 데이터양에 따라 시간이 정비례한다.
  • Linear search, for 문을 통한 탐색을 생각하면 된다.

 

O(n^2): Quadratic

 

  • 데이터양에 따라 걸리는 시간은 제곱에 비례한다. (효율이 좋지 않아서 사용 거의 X)
  • 해당 유형은 이중 Loop내에서 입력 자료를 처리 하는 경우에 나타난다.

 

O(log n): Logarithmic

  • 데이터양이 많아져도, 시간이 조금씩 늘어난다.
  • 시간에 비례하여, 탐색 가능한 데이터양이 2의 n승이 된다.
  • 문제를 해결하는데 필요한 단계들이 연산마다 특정 요인에 의해 줄어든다.
  • 만약 입력 자료의 수에 따라 실행 시간이 이 log N의 관계를 만족한다면 N이 증가함에 따라 실행시간이 조금씩 늘어난다. (주로 커다란 문제를 일정한 크기를 갖는 작은 문제로 쪼갤때 나타나는 유형)

 


각 효율성 비교

[fast]     O(1) >  O(log n)  >  O(n)  >  O(nlog n)  >  O(n²)  >  O(2ⁿ)    [slow] 

 

 

 

 

 

 

이미지 출처 : https://velog.io/@760kry/Big-O , https://www.bigocheatsheet.com/

 

'TIL' 카테고리의 다른 글

<TIL 20.06.29> Promise, Async Await  (0) 2020.06.29
<TIL 20.06.24> Recursion Function  (0) 2020.06.24
<TIL 20.06.22> DFS && BFS  (0) 2020.06.22
<TIL 20.06.19> 객체지향 프로그래밍의 특징  (0) 2020.06.19
<TIL 20.06.18 > Binary Search Tree  (0) 2020.06.18