알고리즘이란 간단하게 말하면 문제를 해결하기 위한 논리적 단계이다. 알고리즘은 자연어, 코드등으로 표현할 수 있는데 어렵고 이해하기 힘든 알고리즘 보다 간단하고 이해하기 쉬운 알고리즘이 더 강력하고 유용하다.
데이터구조와 알고리즘은 서로 다른 개념이면서 상호 보완적이다. 데이터구조는 알고리즘이 다루는 데이터를 구성하며 알고리즘이 데이터를 처리하고 원하는 정보를 산출하는 과정에서 필요한 부분을 담당한다.
함수는 입력을 받아 어떤 처리과정을 수행한 후 출력한다. 함수는 매개변수(파라미터) 또는 인수라고 하는 데이터를 입력으로 사용하며 때로는 결과를 반환한다. 프로그래밍에서의 함수는 입력이 있어도 출력이 없을 수 있다. 이를 void함수라 한다.
재귀는 실행도중 자기 자신을 호출하는 것이다. 보통 특정 조건을 만족할 때 까지 끊임없이 동작하는데, 컴퓨터의 메모리는 한계가 있으므로 최대 재귀 깊이를 초과하면 스택 오버플로우 에러가 발생 할 수 있다.
반복은 재귀와 혼동해서는 안되는 또 다른 개념으로, 특정 조건을 충족할 때까지 코드 덩어리의 실행이 되풀이되는 것을 뜻한다.
탐욕 알고리즘은 근사치를 구하는데 유용하고, 동적 프로그래밍 알고리즘은 최적화 하는데 유용하다.
알고리즘의 효율성을 분석할 때는 시간 복잡도와 공간 복잡도를 이용한다.
가장 자주 사용되는 것은 시간 복잡도이며, 공간 복잡도는 자원이 제한된 시스템에서 프로그램이 구현하는 것과 같이 특별한 경우에 사용한다.
알고리즘의 효율성을 수학적으로 판단하는 방법은 최악의 경우, 최상의 경우, 평균을 측정하는 등 여러가지가 있다. 이런 효율성을 설명할 때는 보통 빅 오 표기법을 이용한다.