Big-O 표기법?

-알고리즘 성능을 수학적으로 표기해주는 표기법

-알고리즘의 시간복잡도(필요한 시간)와 공간복잡도(필요한 메모리)를 표현할 수 있게 해줌

-알고리즘의 실제 러닝 타임을 표시한다기 보다 데이터나 사용자의 증가율에 따른 알고리즘의 성능 예측이 목표


 

Big-O의 시간복잡도 관련 표기법

  • O(1): 입력 크기에 관계없이 알고리즘의 수행 시간이 일정한 상수 시간을 가지는 것을 나타냅니다. (예: 배열에서 인덱스를 사용하여 특정 값을 찾는 경우)
  • O(log n): 입력 크기가 늘어날 때마다 수행 시간이 로그 함수의 증가율로 증가하는 것을 나타냅니다. (예: 이진 검색 알고리즘)
  • O(n): 입력 크기에 비례하여 알고리즘의 수행 시간이 증가하는 것을 나타냅니다. (예: 배열에서 최대값을 찾는 경우)
  • O(n log n): 입력 크기가 늘어날 때마다 수행 시간이 n과 로그 n의 곱으로 증가하는 것을 나타냅니다. (예: 병합 정렬 알고리즘)
  • O(n^2): 입력 크기의 제곱에 비례하여 알고리즘의 수행 시간이 증가하는 것을 나타냅니다. (예: 버블 정렬 알고리즘)
  • O(2^n): 입력 크기가 1 증가할 때마다 수행 시간이 2배

Big-O의 공간복잡도 관련 표기법

  • O(1): 알고리즘이 고정된 메모리 양을 사용하는 경우 (예: 상수 개수의 변수를 사용하는 경우)
  • O(n): 알고리즘이 입력 크기와 비례하는 메모리 양을 사용하는 경우 (예: 입력 배열을 저장하는 경우)
  • O(n^2): 알고리즘이 입력 크기의 제곱과 비례하는 메모리 양을 사용하는 경우 (예: 2차원 배열을 사용하는 경우)
  • O(log n): 알고리즘이 입력 크기에 로그 함수의 증가율과 비례하는 메모리 양을 사용하는 경우 (예: 이진 트리를 사용하는 경우)

그러나 실제로는 Big-O를 사용하여 알고리즘의 성능을 평가하기보다는 실제로 알고리즘을 실행하여 성능을 측정하는 것이 더욱 정확하다.

 


로그 함수는 어떤 수를 다른 수의 거듭제곱으로 나타내는 함수입니다. 예를 들어, 2를 몇 번 거듭제곱해야 8이 되는지를 구할 때, log₂ 8을 계산하면 됩니다. 이 때, 밑이 2인 로그 함수를 사용한 것입니다.

'Computer Science' 카테고리의 다른 글

스택(Stack)과 큐(Queue)  (0) 2023.04.28

+ Recent posts