시간 복잡도: 입력의 크기와 문제를 해결하는데 걸리는 시간의 상관관계
빅오표기법: 주어진 식을 값이 가장 큰 대표항만 남겨서 나타내는 방법
데이터가 커져도 실행시간은 그대로이다
for(i=1; i<=n; i*2) {
...
}
데이터의 양에 따라 실행시간이 일차함수적으로 늘어난다.
ex) 주어진 배열에서 개수를 찾는 문제
int func1(int n) {
int a=0;
for (k=1;k≤N;k+1){
if(n%3 ==0 ||n%5 ==0) {
a=a+n;
}
}
}
⇒ O(N)
func6(k, arr, left, right){
if(left>rigth) return -1;
m=(left+right)/2;
if(arr[m]==k) return m;
else if(arr[m]>k) return func6(k,arr,left,m-1);
else return func(k,arr,m+1,right);
}
NlgN 이진탐색처럼 나누어서 필요한 부분만 취하는 것이아니라 나눈뒤에 모두 선택하는 정렬이다. 그러므로 나누는과정 O(lgN) 모두 선택 O(N) = O(NlgN) ex)합병정렬
int func2(int[] a ,int N) {
for (k=0; k≤N;k=k+1) {
for(
}
}
⇒ O(N2)
func(n,arr) {
if(n<=0) return 0;
else if(n==1) return arr[n]=1;
return arr[n]=func(n-1,r)+func(n-2,r);
int func4(int N) {
int a;
for(int i=1; i*i<N;i=i+1){
a=i*i;
}
return a;
}