복잡도

Hallelujah·2024년 11월 26일

CS

목록 보기
5/10

시간복잡도

  • 입력크기에 대해 알고리즘이 실행되는데 걸리는 시간이다.
  • 빅오 표기법으로 반복횟수를 나타낸다.
    • 빅오의 표기법에서는 상수항은 무시한다.
    • 빅오의 표기법에서는 낮은 항은 무시한다.
    • 빅오의 표기법에서는 계수는 무시한다.
  • 만약 1부터 n까지 더하면? -> O(n)
  • 1부터 2n까지 더하면? -> O(2n) = O(n)
  • 수열의 n번째 항은 1부터 n까지 더한 수라고 할때 그 수열의 n번째 항까지의 덧셈은? -> n번째 항은 (n**2 + n)*(0.5)이고 이 수열의 n번째 항까지의 덧셈은 (2n***3+6n**2+4n)(1/12)이므로 O((2n***3+6n**2+4n)(1/12)) = O((1/6)n***3) = O(n***3) 이다.
// 빅오는 O(n)
int sum = 0;
for(int i=0; i<10; i++){
	sum+=i;
}

공간복잡도(별로 안 중요함)

  • 동적으로 공간이 필요할 때 주로 고려한다, 예를 들어 재귀함수가 있다.

자료구조에서 시간 복잡도

평균 시간 복잡도

자료구조접근탐색삽입삭제
배열(Array)O(1)O(n)O(n)O(n)
스택(Stack)O(n)O(n)O(1)O(1)
큐(queue)O(n)O(n)O(1)O(1)
이중 연결 리스트(double linked list)O(n)O(n)O(1)O(1)
해시 테이블(hash table)O(1)O(1)O(1)O(1)
이진 탐색 트리(BST)O(logn)O(logn)O(logn)O(logn)
AVL 트리O(logn)O(logn)O(logn)O(logn)
레드 블랙 트리O(logn)O(logn)O(logn)O(logn)

최악의 시간 복잡도

자료구조접근탐색삽입삭제
배열(Array)O(1)O(n)O(n)O(n)
스택(Stack)O(n)O(n)O(1)O(1)
큐(queue)O(n)O(n)O(1)O(1)
이중 연결 리스트(double linked list)O(n)O(n)O(1)O(1)
해시 테이블(hash table)O(n)O(n)O(n)O(n)
이진 탐색 트리(BST)O(n)O(n)O(n)O(n)
AVL 트리O(logn)O(logn)O(logn)O(logn)
레드 블랙 트리O(logn)O(logn)O(logn)O(logn)

Discussion

  1. 최악, 평균, 최선의 경우 분석 방법 중에서 어떤 분석이 가장 정확한가?
  • 다 정확하다
  1. 최악, 평균, 최선의 경우 분석 방법 중에서 어떤 분석을 사용할 것인가?
  • 최악의 경우에 주목

더 자세히

개념 위주
예시 위주

profile
개발자

0개의 댓글