자료구조 3

[탐색] 이분 탐색 Binary Search

이분 탐색 Binary Search 이분 탐색의 개념과 특징 이분 탐색(혹은 이진 탐색)은 이미 정렬된 배열에 대해 log₂N의 평균 검색 길이를 갖는 매우 빠르고 간단한 알고리즘이다. 기본 알고리즘 구간에 대해 중간값을 우선 검사한다. 중간값보다 작다면 찾는 값은 왼쪽 구간에 있다. (right = mid-1) 중간값보다 크다면 찾는 값은 오른쪽 구간에 있다. (left = mid+1) 중간값과 같다면 종료 구간을 줄여가며 1~3을 반복한다. 예제 정렬된 배열에 대해 목표값 9를 찾고자 한다. Search 1. left = 0(인덱스 위치) right = 8 mid = (0+8)/2 = 4 >>7(중간값)은 목표값 보다 작으므로 구간을 오른쪽으로 옮긴다. >>left = mid + 1 Search 2...

[자료구조] 트리 Tree

트리 Tree 트리의 개념과 특징 DAG(Directed Acyclic Graphs) 방향성 있는 비순환 그래프 loop x, circuit x 노드(node 혹은 vertex)와 링크(link 혹은 edge)의 집합 트리에서 한 노드에서 다른 노드로 가는 경로(path)는 유일하다. N개의 노드를 가지는 나무는 N-1개의 링크를 가진다. 종류 : 이진트리(binary tree), B 트리, 힙(heap), 세그먼트(segment) 등등 트리의 기본 구조 루트 Root : 트리의 제일 위에 있는 노드 경로 Path : 트리 내에서 연결된 노드를 통해 이동할 때의 이동 경로(path는 오직 하나) 자식 노드 children, 부모 노드 parent : 직접 연결되어 있으면서 아래에 있다면 자식, 위에 있다..

[자료구조] 스택 Stack

스택 Stack 스택이란? 스택이나 큐, 트리와 같은 자료구조는 자신이 행위적 측면을 포함하는 자료구조이다. 이런 자료 구조는 제한된 접근 방식을 규정하고 있으며 이를 추상적 자료 구조(Abstrct Data Structure)라고 한다. 스택은 제일 나중에 들어간 것이 제일 먼저 나오는 LIFO(Last In First Out) 구조로 배열이나 연결 리스트(Linked List)로 구현할 수 있다. 배열로 구현하기는 쉽지만 처음에 스택의 크기를 지정해줘야 한다는 단점이 있고, 연결 리스트는 크기를 동적으로 할당하기 때문에 용량에 대해서는 제한(최대 메모리까지)이 없지만 구현하기는 비교적 어렵다는 단점이 있다. 스택의 구성 스택은 기본적으로 데이터를 삽입할 수 있는 push와 스택에서 데이터 하나를 빼내..