Python 개념

알고리즘의 시간 복잡도 - Big-O 표기법

whateveryouwish 2024. 9. 4. 11:19

Big-O 표기법은 알고리즘의 시간 복잡도나 공간 복잡도를 나타내는 수학적 표기법입니다. 이는 알고리즘의 성능을 분석하고 비교하는 데 매우 유용합니다. Big-O 표기법은 최악의 경우 성능을 설명하며, 입력 크기가 커질 때의 알고리즘의 성장률을 나타냅니다.

주요 개념

  1. 성장률: 알고리즘의 실행 시간이 입력 크기(n)에 따라 어떻게 변화하는지를 나타냅니다. 예를 들어, O(n) 알고리즘은 n이 커질수록 실행 시간이 선형적으로 증가합니다.
  2. 최악의 경우: Big-O 표기법은 일반적으로 최악의 경우를 기준으로 성능을 평가합니다. 이는 알고리즘이 가장 느리게 작동할 때의 시간을 나타냅니다.
  3. 상수 무시: Big-O 표기법에서는 상수를 무시합니다. 예를 들어, O(2n)과 O(n)은 동일하게 O(n)으로 표현됩니다. 이는 입력 크기가 커짐에 따라 상수의 영향이 작아지기 때문입니다.

일반적인 Big-O 표기법

  • O(1): 상수 시간 복잡도. 입력 크기에 관계없이 일정한 시간이 소요됩니다.
    • 예: 배열의 첫 번째 요소 접근.
  • O(log n): 로그 시간 복잡도. 입력 크기가 증가할 때 실행 시간이 느리게 증가합니다.
    • 예: 이진 탐색.
  • O(n): 선형 시간 복잡도. 입력 크기에 비례하여 실행 시간이 증가합니다.
    • 예: 리스트의 모든 요소를 순회.
  • O(n log n): 선형 로그 시간 복잡도. 주로 효율적인 정렬 알고리즘에서 나타납니다.
    • 예: 합병 정렬, 퀵 정렬.
  • O(n²): 이차 시간 복잡도. 두 개의 중첩된 반복문이 있을 때 발생합니다.
    • 예: 버블 정렬, 선택 정렬.
  • O(2ⁿ): 지수 시간 복잡도. 입력 크기가 증가할 때 실행 시간이 급격히 증가합니다.
    • 예: 피보나치 수열의 재귀적 계산.

Big-O 분석의 중요성

  • 성능 비교: 서로 다른 알고리즘을 비교할 때, Big-O 표기법을 사용하여 각 알고리즘의 성능을 쉽게 비교할 수 있습니다.
  • 예측 가능성: 알고리즘의 성능을 예측할 수 있어, 대규모 데이터셋을 처리할 때 적절한 알고리즘을 선택하는 데 도움이 됩니다.
  • 최적화: 알고리즘의 복잡도를 이해함으로써, 더 효율적인 방법으로 개선할 수 있는 기회를 제공합니다.

Big-O 표기법은 알고리즘의 시간 복잡도를 이해하고 비교하는 데 매우 유용한 도구입니다. 추가적인 질문이 있으면 언제든지 말씀해 주세요!

 

https://hanamon.kr/%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98-time-complexity-%EC%8B%9C%EA%B0%84-%EB%B3%B5%EC%9E%A1%EB%8F%84/

 

[알고리즘] Time Complexity (시간 복잡도) - 하나몬

⚡️ Time Complexity (시간 복잡도) Time Complexity (시간 복잡도)를 고려한 효율적인 알고리즘 구현 방법에 대한 고민과 Big-O 표기법을 이용해 시간 복잡도를 나타내는 방법에 대해 알아봅시다. ❗️효

hanamon.kr

 

위 링크에 시각자료를 통한 상세한 설명이 되어있음