빅오 표기법
5236 단어 htmlcsswebdevjavascript
-Intro to Big O
-Timing Our Code
-Counting Operations
-Official Intro to Big O
-Simplifying Big O Expressions
-Space Complexity
-Logs
빅오 소개
Big O를 사용하면 일부 코드가 얼마나 빠르고 효율적인지 결정할 수 있습니다.
문제에 대한 솔루션을 프로그래밍하는 방법에는 여러 가지가 있습니다. 그러나 일부 방법은 문제를 해결하는 데 다른 방법보다 빠릅니다. Big O를 사용하면 코드를 다른 코드와 비교하여 최상의 성능을 얻을 수 있습니다.
Big O 표기법은 3가지 범주로 나눌 수 있습니다.
O(1)은 항상 3개의 연산입니다.
function addUpTo(n) {
return n * (n + 1) / 2;
}
O(n)은 n(10n)의 배수로 제한되는 작업 수입니다.
function addUpTo(n) {
let total = 0;
for (let i = 1; i <= n; i++) {
total += i;
}
return total;
}
O(n^2)는 다른 작업 내부의 작업입니다.
function printAllPairs(n) {
for (var i = 0; i < n; i++) {
for (var j = 0; j < n; j++) {
console.log(i,j);
}
}
}
코드 타이밍
좋은 코드는 속도와 효율성에 최적화되어 있습니다. 불필요하게 부풀려진 코드가 있을 수 있습니다. 불필요한 코드는 응용 프로그램이 느려 보일 수 있음을 의미할 수 있습니다. 코드가 느려지거나 충돌할 때 코드에서 비효율적인 부분을 식별하면 접근 방식에서 문제점을 찾는 데 도움이 될 수 있습니다.
계산 작업
초를 세는 대신 컴퓨터가 수행해야 하는 간단한 작업의 수를 세십시오.
계산에 따라 작업 수는 2n만큼 낮거나 5n + 2만큼 높을 수 있습니다.
그러나 정확한 수에 관계없이 연산 수는 대략 n에 비례하여 증가합니다.
Big O 공식 소개
Big O 표기법은 퍼지 계산을 공식화하는 방법입니다. 알고리즘의 런타임에 대해 공식적으로 이야기할 수 있습니다.
입력이 증가함에 따라 증가합니다.
함수에 대한 입력 사이의 관계 또는 입력이 증가함에 따라 해당 함수의 런타임이 어떻게 변경되는지 설명합니다.
입력 크기와 해당 입력 크기에 상대적인 시간 및 해당 입력에 상대적인 시간 간의 관계입니다.
컴퓨터가 수행해야 하는 간단한 작업의 수가 n이 증가함에 따라 궁극적으로 일정 시간 f(n)보다 적은 경우 알고리즘은 o(f(n))라고 합니다.
f(n)은 선형일 수 있습니다(f(n) = n)
f(n)은 2차일 수 있습니다(f(n) = n^2)
f(n)은 일정할 수 있습니다(f(n) = 1)
f(n)은 뭔가 다를 수 있습니다
Big O 표현식 단순화
Big O로 복잡성을 분석하는 것은 복잡해질 수 있습니다. 규칙이 항상 작동하는 것은 아니지만 유용한 출발점입니다.
공간 복잡성
지금까지 우리는 시간 복잡도에 초점을 맞추었습니다. 입력의 크기가 증가함에 따라 알고리즘의 런타임을 어떻게 분석할 수 있습니까?
이제 입력 크기가 증가함에 따라 알고리즘이 차지하는 공간에 어떤 일이 발생하는지 집중해 보겠습니다.
Big O 표기법을 사용하여 공간 복잡성을 분석할 수도 있습니다.
알고리즘에서 코드를 실행하려면 얼마나 많은 추가 메모리를 할당해야 합니까?
보조 공간 복잡도는 입력이 차지하는 공간을 포함하지 않고 알고리즘에 필요한 공간을 나타냅니다.
공간 복잡성에 대한 규칙
로그
특정 검색 알고리즘에는 로그 시간 복잡도가 있습니다. 효율적인 정렬 알고리즘에는 로그가 포함됩니다. 재귀는 때때로 로그 공간 복잡성을 포함합니다.
Reference
이 문제에 관하여(빅오 표기법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/code_regina/big-o-notation-2ng0텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)