시간복잡도

young·2024년 10월 14일
0

Algorithm

목록 보기
2/2
post-thumbnail

시간복잡도

입력되는 데이터의 증가에 따른 성능의 변화를 의미

빅오 표기법 _ O(n)

: 어떤 알고리즘에 n개의 데이터가 들어갔을 때 n개 대비 얼마나 많은 연산을 수행하는가

O(1)

int func1(int[] n){
	if(n.length <3 )
    return 0;
   
   int a = n[0];
   a += n[1];
   a += n[2];
   
   return a;
}

n개의 배열이 존재한다
배열이 1개여도, 100개여도 수행할, 처리해야할 연산의 양은 고정되어있으므로 O(1)로 표기

O(n)

int sum(int[] n){
	int s = 0;
    for(int i : n) {
      s += 1;
    }
    return s;
}

배열이 n개일 경우 수행해야할 반복문도 동일하게 수행되어야 하므로, O(n)로 표기

O(n^2)

void bubbleSort(int[] n){
	for (int i=0; i<n.length; i++){
    	for (int j=0; j<n.length; j++){
          if(n[i] < n[j]) {
            int temp = n[i];
            n[j]= n[i];
            n[i] = temp;
          }
        }
    }
}   

n이 증가할수록 수행되는 연산의 횟수도 증가하고 있으므로 O(n^2)로 표기

O(longn)

int sum(int[] n){
	int sum = 0;
    int max = n.length;
    while (max > 0) {
      sim += n[max-1];
      max /= 2;
    }
    return sum;
}

n을 넣으면, max 변수에 n이 포함되어있는 걸 확인되는데, max 변수는 연산을 실행할수록 줄어들고 있다.
동작을 하면 할수록 취급하는 범위가 점점 절반씩 줄어들고 있기 때문에 O(logn)로 표기 !

profile
ฅʕ•̫͡•ʔฅ

0개의 댓글