Big-O Notation : 알고리즘의 시간 복잡도나 공간 복잡도를 설명하는 데 사용되는 수학적 표기법

  • 알고리즘의 효율성 및 비교하기 위해 사용함
  • 알고리즘의 최악의 경우 성능을 나타냄
  • 점근 표기법 (asymptotic notation) 의 하나
Big O 표기법 종류
    • 알고리즘의 실행 시간이 입력 크기 에 선형적(비례적)으로 증가함을 나타냄
    • ex)
      • 개의 무작위로 나열된 수에서 최댓값을 찾기 위해 선형 탐색 알고리즘1을 적용
        • Best case :
          • 최댓값이 아닌 특정한 값을 찾을 경우에, 찾고자 하는 값이 배열의 첫 번째 위치에 있을 경우, Best case 는 이 된다.
        • Average case :
        • Worst case :
          • 마지막에 있거나 배열에 없을 경우
    • 알고리즘의 실행 시간이 입력 크기 의 로그에 비례하게 증가함을 나타냄 (로그 함수와 알고리즘 특징)
    • ex)
      • 개의 크기 순으로 정렬된 수에서 특정 값을 찾기 위해 이진 탐색 알고리즘2을 적용
        • Best case :
          • 찾으려는 값이 배열의 중간에 위치할 경우
        • Average case :
        • Worst case :
          • 마지막에 있거나 배열에 없을 경우
    • 알고리즘의 실행 시간이 입력 크기와 무관하게 일정함을 나타냄
    • 알고리즘의 실행 시간이 입력 크기의 제곱에 비례하여 증가함을 나타냄
    • ex)
      • 개의 무작위로 나열된 수를 정렬시키기 위해 삽입 정렬3을 적용
        • Best case :
          • 이미 정렬된 배열을 다룰 경우
        • Average case :
        • Worst case :
          • 역순으로 정렬된 배열일 경우
    • 알고리즘의 실행 시간이 입력 크기 과 입력 크기의 로그와의 곱에 비례함을 나타냄
    • 입력 패턴에 따라 정렬 속도에 차이가 있지만, 정렬 문제에 대해 보다 낮은 복잡도를 갖는 알고리즘은 존재할 수 없음이 증명됨
    • ex)
      • 개의 무작위로 나열된 수를 정렬시키기 위해 병합 정렬4을 적용

Footnotes

  1. 배열이나 리스트에서 특정 값이나 조건을 만족하는 요소를 하나씩 차례대로 확인하여 찾는 가장 기본적인 탐색 알고리즘 ↩

  2. 정렬된 배열이나 리스트에서 특정 값이나 조건을 만족하는 요소를 탐색 범위를 반으로 줄여가며 수행하는 효율적인 탐색 알고리즘 ↩

  3. 배열의 처음부터 끝까지 각 요소를 차례대로 방문하며, 현재 요소를 정렬된 부분 배열의 올바른 위치에 삽입함으로써 작동하는 간단하고 직관적인 알고리즘 ↩

  4. 배열의 처음부터 끝까지 각 요소를 차례대로 방문하며, 현재 요소를 정렬된 부분 배열의 올바른 위치에 삽입함으로써 작동하는 간단하고 직관적인 알고리즘 ↩