컴퓨터 알고리즘 2023-03-08 수업정리

Flow

알고리즘이란?


Recursion


Recursive Fibonacci

int fib(int n)
{
	if(n<=1)
		return n;
	else
		return fib(n-1) + fib(n-2);
}

Iterative Fibonacci

int fib2(int n)
{
	int i;
	int f[0..n];
	f[0] = 0;
	if(n > 0)
	{
		f[1] = 1;
		for(i=2; i <= n; i++)
			f[i] = f[i-1] + f[i-2];
	}
	return f[n];
}

Anyway...

알고리즘의 분석


시간복잡도

function1(A[], n)
{
	k = n/2;
	return A[k];
}
function2(A[], n)
{
	sum = 0;
	for(int i = 1; i <= n; i++)
		sum += A[i];
	return sum;
}
function3(A[], n)
{
	sum = 0;
	for(int i = 1; i <= n; i++)
		for(int j = 1; j <= n; j++)
			sum += A[i]*A[j];
	return sum;
}

위에서 살펴본 시간복잡도는 세 가지 경우로 나누어 생각할 수 있다.

  1. Worst case
  2. Best case
  3. Averge case 사실 위의 세 경우 중 Best case에 대한 시간복잡도는 별로 의미가 없으며, Worst case의 시간복잡도가 최악의 경우를 보장하기 때문에 주 관심사가 된다.

또한 아래와 같이 시간복잡도를 구분할 수 있다.