Big-O 표기법을 아십니까?
저처럼 알고리즘 관련 강의를 들으셨다면 Big-O 표기법이라는 용어를 들어보셨을 것입니다. 알고리즘을 구현하기 전에 비용을 분석하는 가장 기본적인 도구 중 하나입니다.
Big-O 표기법은 대수적 용어를 사용하여 코드의 복잡성을 설명하지만 오늘은 5가지 일반적인 Big-O를 분석할 때 더 간단한 접근 방식을 사용하겠습니다.
O(1) - 상수 복잡성
입력 데이터 세트 크기에 관계없이 실행하는 데 항상 일정한 시간(또는 공간)이 소요됩니다.
int constantExample(int x, int y) {
return x + y;
}
O(log(n)) - 로그 복잡도
일반적으로 반복할 때마다 문제 크기가 줄어듭니다.
int logarithmicExample(int n) {
while (n > 1) {
n = n / 2;
}
}
O(n) - 선형 복잡도
입력 크기에 정비례하여 선형적으로 증가합니다.
boolean linearExample(IList elements, int value) {
foreach (var element in elements) {
if (element == value) return true;
}
return false;
}
O(n2) - 2차 복잡도
입력 크기의 제곱에 정비례합니다.
void quadraticExample(int array[], int size) {
for (int i = 0; i < size; i++) {
for (int j = 0; j < size; j++) {
print(array[i], array[j]);
}
}
}
O(2n) - 기하급수적 복잡성
입력 데이터 세트에 추가할 때마다 성장이 두 배가 됩니다. 좋은 예는 피보나치 재귀 함수입니다.
int fibonacci(int number) {
if (number <= 1) return number;
return fibonacci(number - 1) + fibonacci(number - 2);
}
💡 Big-O 치트 시트를 원하십니까? Head over here ! 최상의 시나리오, 평균 시나리오 및 최악의 시나리오에서 데이터 구조 및 알고리즘의 복잡성을 찾을 수 있습니다.
Reference
이 문제에 관하여(Big-O 표기법을 아십니까?), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/codacy/do-you-know-the-big-o-notation-kja텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)