Category: Algorithm

[Data Structure] Binary Search Tree

이진 탐색 Tree (Binary Search Tree)이진 탐색 Tree는 데이터의 삽입, 삭제, 탐색 등이 자주 발생하는 경우에 효율적인 구조이다. 같은 값을 갖는 Node가 없어야 한다. 왼쪽 Sub Tree에 있는 모든 데이터는 현재 Node의 값보다 작고, 오른쪽 Sub Tree에 있는 모든 Node의 데이터는 현재 Node의 값보다 크다. 데이터

[Data Structure] Binary tree

이진 트리 (Binary tree)이진 트리는 모든 Node들의 자식 Node가 두 개 이하인 트리를 의미한다. 서브 트리를 왼쪽 서브 트리와 오른쪽 서브 트리로 구분한다. 단말 Node를 제외한 나머지 Node가 두 개의 자식 Node를 가지고 있는 트리를 완전 이진 트리(complete binary tree)라고 한다. 트리의 마지막 level까지 모든

[Data Structure] Queue

Queue는 각 Data들을 순차적으로 넣었다가 순차적으로 빼내는 FIFO(First In First Out) 구조이다. 기본 연산으로 push로 rear에 데이터를 추가하고 pop으로 front의 데이터를 가져오는 방식을 가진다. 배열(Array)로 구현한 Queue12345678910111213141516171819202122232425262728293

[Data Structure] Stack

Stack은 각 Data들을 순차적으로 넣었다가 역순으로 빼내는 LIFO(Last In First Out) 또는 FILO(First In Last Out) 구조이다. 기본 연산으로 push로 top에 데이터를 추가하고 pop으로 top의 데이터를 가져오는 방식을 가진다. Stack은 제한된 용량을 가지도록 구현되기 때문에 Stack이 가득 찼을 때 push

[Data Structure] Linked-list

Linked List는 각 Data들을 Pointer로 연결하여 관리하는 구조이다. 첫 번째 Node인 Head pointer가 다음 Node를 가리키고 그 Node는 다음 Node를 가리킨다. 맨 마지막 Node에는 더 이상 다음 Node를 가리키는 Pointer가 없는데 이를 Tail Node라 한다. 단순 Linked list (Singly Linke

[Algorithm] Quick sort

한 평생 Bubble sort만 사용하다가 이대로 계속 무식하면 안되겠다 싶어서 찾아보았다. Quick sort는 Charles Antony Richard Hoare 경에 의해 개발되었다. 알고리즘 List 중 하나의 Element를 선택한다. 이를 Pivot 이라 부른다. Pivot을 기준으로 좌측에는 작은 Element들이 오도록, 우측에는 큰 Elem