알고리즘이란 주어진 문제를 해결하기 위한 잘 정의된 동작들의 유한 집합 입니다.
알고리즘을 개발하는데 가장 먼저 선행되어야 할 것은 바로 주어진 문제를 잘 이해하는 것입니다. 주어진 문제 뿐만 아니라 문제가 주어지는 상황은 문제를 해결하는 데 이용 할 수 있는 자원이 됩니다.
'무엇을'은 자료(data) : 어떠한 조직을 가지게 되는데 이를 자료구조라 합니다.'어떻게 하라'는 알고리즘이 됩니다.
따라서, 상황에 따라 알맞는 것을 선택하여 사용 해야합니다.
그리고 사용빈도가 낮은 곳에는 효율성이 떨어지더라도 간단한 알고리즘이 좋습니다.
알고리즘은 최악의 경우와 최선의 경우를 따집니다.
최악의 경우(Worst Case) : 가장 많은 시간과 공간을 사용하는 경우
최고의 경우(Best Case) : 시간과 공간을 적게 사용하는 경우
평균적 경우(Average Case) : 평균적인 시간과 공간을 필요로하는 경우
그리고 이를 표현할때는 빅오(Ο-표기법을 사용)라는 표기법을 사용합니다.
1 : 입력 자료의 수에 관계 없이 일정한 실행 시간을 갖는 알고리즘
logN : 만약 입력 자료의 수에 따라 실행시간이 logN의 관계를 만족한다면 N이 증가함에 따라 조금씩 증가함
N : 입력 자료의 수에 따라 선형적으로 실행시간이 걸리는 경우
N log N : 커다란 문제를 독립적인 작은 문제로 쪼개어 각각에 대해 독립적으로 해결하고 나중에 다시 그것들을 모으는 경우
N²: 루프내에 루프
N³ : 삼중 루프
2^n : 알고리즘을 처음 개발할때 나타나는 극히 드문 현상
Ω(오메가) 최선의 경우Θ(세타) 최선과 최악이 동등할때 사용