2018/05/29 4

해쉬 테이블(Hash Table)

해쉬 테이블(Hash Table)저장되는 데이터는 Key와 Value로 한 쌍을 이룸.탐색의 시간복잡도가 거의 ​에 가깝다.dictionary나 map이라고 부르기도 한다. 해쉬 함수(Hash function)key 값의 범위를 제한하여 메모리를 절약하기 위한 방법int GetHashValue(int key){ return key % 2018; }위의 해쉬 함수에서는 key 값을 받아 크기가 2018인 배열에 들어갈 인덱스를 결정한다.key값에 따라 중복되는 인덱스가 나타날 수 있음. 이를 충돌이라고 하며, 충돌을 다루는 방법은 체이닝과 프로빙, 이중 해쉬 등이 있다. 체이닝(Chaining)연결 리스트를 활용하여 충돌을 해결.추가적인 메모리가 필요하다. 프로빙(Probing)충돌이 발생했을 때 옆자리가..

아카이빙 2018.05.29

AVL 트리

AVL 트리균형잡힌 이진 탐색 트리검색, 삽입, 삭제의 시간 복잡도는 ​각각의 노드 마다 왼쪽의 서브트리의 높이와 오른쪽의 서브트리의 높이 차이(균형)가 1보다 크지 않음. 노드 클래스class Node { public: int data; int height; Node* left; Node* right; ​ Node(int data) { this->data = data; this->height = 1; left = NULL; right = NULL; } }; AVLTree 클래스class AVLTree { public: Node* root; ​ AVLTree(int data) { root = new Node(data); } Node* RotateLL(Node* node) {} Node* RotateRR(..

아카이빙 2018.05.29

이진 탐색 트리(Binary Search Tree)

이진 탐색 트리(Binary Search Tree)각 노드에는 값이 존재각 노드의 왼쪽 서브트리에는 그 노드의 값보다 작은 값을 지닌 노드들로 이루어 짐.각 노드의 오른쪽 서브트리에는 그 노드의 값보다 큰 값을 지닌 노드들로 이루어 짐. 노드 클래스class Node { public: int data; Node* left; Node* right; ​ Node(int data) { this->data = data; left = NULL; right = NULL; } }; BST 클래스​class BinarySearchTree { public: Node* root; ​ BinarySearchTree(int data) { root = new Node(data); } ​ void Insert(int data);..

아카이빙 2018.05.29

하노이 타워 문제

하노이 타워 문제너무 유명한 문제이기 때문에 문제는 생략.재귀를 이용할 수 있는지를 알아보는 문제. #include ​ void Move(int id, char from, char to) { printf("[원판%d] %c -> %c\n",id, from, to); } ​ //from에 꽂혀있는 num개의 원판을 by를 거쳐서 to로 이동. void SolveHanoi(int num, char from, char by, char to) { if (num == 1) { Move(1, from, to); return; } ​ SolveHanoi(num - 1, from, to, by); Move(num, from, to); SolveHanoi(num - 1, by, from, to); } ​ int main..

아카이빙 2018.05.29