[예시]
O(2N) → O(N)
: 상수항 무시, O(2N)은 O(N)으로 표시한다.
O(N²+N+1) → O(N²)
: 영향력 없는 항 무시, O(N²+N+1)은 O(N²)으로 표시한다.
//예제(java code)
public boolean func(int[] n) {
//배열 n의 크기와 상관없이 n[0]이 0이면 true를, 0이 아니면 false를 반환한다.
return (n[0] == 0)? true : false;
}
//예제(java code)
public void func(int[] n) {
for(int i : n) {
System.out.println(i); //배열 n의 크기만큼 출력을 수행한다.
}
}
//예제(java code)
public void func(int[] n) {
for(int i : n) {
for(int j : n) {
System.out.println(i+j); //배열 n의 제곱 크기만큼 출력을 수행한다.
}
}
}
//예제(java code)
public void func(int[] n, int[] m) {
for(int i : n) {
for(int j : m) {
System.out.println(i+j); //배열 n과 m 크기의 곱만큼 출력을 수행한다.
}
}
}
//예제(java code)
public void func(int[] n) {
for(int i : n) {
for(int j : n) {
for(int k : n) {
System.out.println(i+j); //배열 n의 크기 세제곱만큼 출력을 수행한다.
}
}
}
}
//예제(java code) - 피보나치 수열을 구하는 재귀함수
public int func(int n) {
if(n <= 0) { return 0; }
else if(n == 1) { return 1; }
return func(n-1) + func(n-2);
}
//예제(java code) - Binary Search Tree
public void func(int key, int[] arr, int start, int end) {
if(start > end) { return -1; }
int mid = (start + end) / 2;
if(arr[mid] == key) { return mid; }
else if(arr[mid] > key) { return func(key, arr, start, mid-1); }
else { return func(key, arr, mid+1, end); }
}
참고 영상1 - Big O 표기법 완전정복
참고 영상2 - Big O 10분컷 설명
참고 영상3 - Array 기초 (+복잡도 설명)
참고 블로그 - 공간 복잡도
Big O Cheat Sheet에서 데이터 구조에 따른 복잡도의 Big O 표기를 확인할 수 있다.