a. 주어진 문제에 대한 결과를 생성하기 위해, 단순하며 모호하지 않고 컴퓨터가 수행 가능한 일련의 유형 한개의 명령들을 순서적으로 구성한 것
b. 알고리즘의 만족조건
c. 알고리즘 생성
데이터가 주어지는 상태에 따라 알고리즘이 달라질 수 있다
정확성
효율성:
공간복잡도(space complexity): 필요한 총 메모리의 양
시간복잡도(time complexity): 단위 연산 개수보다 입력크기의 함수로 표현하는 것이 바람직하나, 입력이 항상 최선이라고 가정할 수 없으므로 최악의 수행시간을 취득
입력 크기 n이 충분히 커짐에 따라 결정되는 성능
n이 작은 경우 각각의 개수가 중요하지만, n이 클수록 최고차항이 상대적으로 중요
점근성능의 표기법
탐색(search): 데이터에서 원하는 원소를 찾는 것
구분
저장장소에 따라
저장형태에 따라, 리스트(list), 트리(tree), 그래프(graph), 표(table), 스트링(string)
1) 이진 탐색트리
2) 2-3-4 트리
성질
2-노드(키값1개,자식2), 3-노드(키값2개, 자식3), 4-노드(키값3개, 자식4)
한 노드의 한 키의 왼쪽의 모든 부분 트리의 키값은 작고, 오른쪽은 크다
모든 리프노드의 높이는 동일하다
탐색
추가
- 탐색과정에서 4-노드를 만나게 되면 노드분할(하나의 키를 갖는 3개의 2-노드로 상하좌우 분할)을 행한다
3) 흑적트리
a. 삼촌도 적색일 경우, 부모-삼촌을 흑색으로 바꾸고 조부모를 적색으로 바꾼다
b-1. (삼촌이 흑색이고) 현재 키값이 부모-조부모 사이의 키값일 경우, 현재를 기준으로 오른쪽으로 회전(rorate) 시킨다(오른쪽을 내림)
b-2. (삼촌이 흑색이고) 현재 키값보다 부모-조부모의 키값이 크거나 작을 경우, 부모-조부모의 색깔을 바꾸고 부모를 기준으로 왼쪽으로 회전(rorate) 시킨다. (왼쪽을 내림)