데이터 구조 및 알고리즘 - 소개
2059 단어 algorithmsdatastructure
시간 복잡도와 Big 'O' 표기법
시간 복잡도는 입력의 크기가 증가함에 따라 알고리즘의 실행 시간을 분석하는 방법이며 Big O Notation은 입력이 증가함에 따라 알고리즘의 실행 시간이 어떻게 증가하는지에 대해 공식적으로 이야기하는 방법입니다.
We say that an algorithm is O(f(n)) if the number of simple operations the computer has to do is eventually less than a constant times f(n), as n increases
let's look at the code below:
function addUpTo(n) {
return n * (n + 1) / 2;
}
"n"의 크기에 관계없이 위의 코드에는 곱셈, 덧셈 및 나눗셈의 세 가지 연산이 항상 있습니다. 우리는 위의 코드가 O(1)의 Big O 표기법을 가지고 있다고 말합니다. 다른 예를 보자
function addUpTo(n) {
let total = 0;
for (let i = 1; i <= n; i++) {
total += i;
}
return total;
}
위의 예에서 루프가 통과하는 후속 작업 수는 인수 'n'의 값에 고정됩니다. 작업 수는 O(n)의 n-Big O 표기법의 배수로 제한됩니다. 예를 들어 다양한 형태를 취할 수 있는 관계의 추세에 더 관심이 있습니다.
공간 복잡성
빅오 표기법을 사용하여 공간 복잡성을 분석할 수도 있습니다. 즉, 알고리즘에서 코드를 실행하기 위해 할당해야 하는 추가 메모리 양, 즉 입력이 차지하는 공간을 포함하지 않고 알고리즘에 필요한 공간입니다.
참고해야 할 몇 가지 중요한 사항:
function double(arr) {
let newArr = [];
for (let i = 0; i < arr.length; i++) {
newArr.push(2 * arr[i]);
}
return newArr;
}
우리는 위의 코드가 O(1)의 Big O 표기법(일정한 복잡성)을 가지고 있음을 관찰할 수 있습니다. 즉, 입력 크기에 관계없이 동일한 양의 공간이 필요합니다.
이 블로그를 읽으면서 시간 및 공간 복잡성에 대한 통찰력을 얻었기를 바랍니다.
Reference
이 문제에 관하여(데이터 구조 및 알고리즘 - 소개), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/tim254/data-structures-and-algorithms-intro-3ofn텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)