1) 이진트리 : 정점이 최대 2개의 자식을 가짐
2) 완전이진트리 : 마지막 레벨을 제외한 모든 정점이 채워짐
3) 포화이진트리 : 마지막 레벨까지 모두 채워짐
4) 편향 트리 : 정점히 한개로 한쪽으로 치우침
1) 이진탐색
2) 힙
3) AVL
4) 레드블랙트리
1) 최대 힙 : 가장 큰 루트 값
2) 최소 힙 : 가장 작은 루트 값
우선순위큐를 구현하기 위한 방법
우선순위 큐는 자료구조가 아닌 개념이므로 힙외에 다양한 방법으로 구현은 가능하다.
1) 요소 추가
2) 요소 삭제
1) 요소 추가
O(logn)
)2) 요소 삭제
문자열을 저장하고 효율적 탐색을 위한 트리형태 자료구조
루트는 비어있고 간선은 추가될 문자를 키로 가진다.
각 정점은 이전 정점 + 간선의 키 값이 된다.
- 비교식 정렬 => O(n제곱)
1) 버블정렬 : 인접 요소 검사
2) 선택정렬 : 선택요소와 가장 우선순위가 높은 요소 교환
3) 삽입정렬 : 인접 간의 값을 비교하여 밀어낸다- 분산식 정렬 (분할정복) => O(nlogn)
1) 합병정렬 : 안정적인 정렬 알고리즘
2) 퀵정렬 : 매우빠르나 최악의 경우 시간복잡도가 높다
array.sort()
를 쓰면 ASCII 코드로 10이 2보다 오름차순이어도 1과 2를 비교해 정상적인 순서가 나오지 않는다. array.sort((a,b)=>a-b)
나 array.sort((a,b)=>b-a)
필요
- 선형탐색 => O(n)
- 이진탐색 => O(logn)
1) Array를 이용
2) LinkedList를 이용 (이진탐색트리)
- Queue를 이용하여 구현
- 가까운 정점부터 탐색
- 시간복잡도 : O(V+E) V:정점수 , E:간선수
- Stack를 이용하여 구현
- 시작정점부터 깊은 것을 먼저 찾는다.
- 시간복잡도 : O(V+E) V:정점수 , E:간선수
- 크루스칼 알고리즘
- 다익스트라 알고리즘
ex) 동전 최소 개수 반환 문제
‘다른 함수를 전달인자로 받거나 함수실행의 결과를 함수로 반환하는 함수