Study/자료구조

·Study/자료구조
그래프연결되어 있는 객체 간의 관계를 표현하는 자료구조가장 일반적인 자료구조 형태오일러 정리: 모든 정점에 연결된 간선의 수가 짝수이면 오일러 경로 존재함그래프 정의그래프 G는 (V, E)로 표시정점(Vertices) 또는 노드(Node)간선(Edge) 또는 링크(Link): 정점들 간의 관계 의미시각적으로 달라 보여도 모든 정점 사이의 관계가 동일하다면 같은 그래프그래프의 종류무방향 그래프(A, B) = (B, A)V(G) = {A, B, C, D}E(G) = {(A, B), (A, C), (A, D), (B, C), (C, D)}방향 그래프 ≠ 가중치 그래프, 네트워크: 간선에 비용이나 가중치가 할당된 그래프부분 그래프: 그래프의 일부만 포함된 그래프그래프의 용어인접 정점: 간선에 의해 직접 연결된 ..
·Study/자료구조
이진탐색트리효율적인 탐색을 위한 이진트리 기반의 자료구조삽입, 삭제, 탐색: O(log n)모든 노드는 유일한 키를 가짐왼쪽 서브트리의 키들은 루트의 키보다 작음오른쪽 서브트리의 키들은 루트의 키보다 큼왼쪽과 오른쪽 서브트리도 이진 탐색트리이진탐색트리의 연산노드의 구조탐색키, 키에 대한 값의 형태class BSTNode: def __init__(self, key, value): self.key = key self.value = value self.left = None self.right = None탐색 연산키를 이용한 탐색루트를 기준으로 작으면 왼쪽 자식부터, 크면 오른쪽 자식부터 다시 탐색과정을 반복하며 탐색키와 동일한 키를 찾을 경우 탐색 성공,..
·Study/자료구조
힙Heap'더미'와 모습이 비슷한 완전 이진트리 기반의 자료 구조가장 큰(또는 작은) 값을 빠르게 찾아내도록 만들어진 자료 구조최대 힙: 부모 노드의 키 값이 자식 노드의 키 값보다 크거나 같은 완전 이진트리최소 힙: 부모 노드의 키 값이 자식 노드의 키 값보다 작거나 같은 완전 이진트리힙의 연산삽입 연산 - upheap회사에서 신입 사원이 들어오면 일단 말단 위치에 앉히고 능력을 봐서 위로 승진시킴부모 노드와 비교해서 더 클 경우 교환(sift-up)시간 복잡도: O(log n)삭제 연산 - downheap회사에서 사장 자리가 비면 일단 사장 자리에 앉히고 순차적으로 강등시킴자식 노드 중 더 큰 자식 노드와 비교해서 더 작을 경우 교환(sift-down)힙의 구현보통 배열을 이용하여 구현완전 이진트리 ..
·Study/자료구조
트리계층적인 자료의 표현에 적합한 자료 구조트리의 모든 노드는 자신의 서브트리의 루트 노드연결된 위 레벨의 노드는 부모 노드, 아래 레벨의 노드는 자식 노드단말 노드: 자손이 없는 노드, 자손이 있으면 비단말 노드차수: 해당 노드의 자식 노드의 수트리의 차수: 트리를 구성하고 있는 각 노드의 차수 중 가장 높은 차수이진트리모든 노드가 2개의 서브 트리를 갖는 트리공집합이거나 루트와 왼쪽/오른쪽 서브 트리로 구성된 노드들의 집합순환적으로 정의됨서브트리는 공집합일 수 있음이진트리의 서브 트리들은 모두 이진트리이어야 함이진트리의 분류포화 이진트리 (Full Binary Tree)트리의 각 레벨에 노드가 꽉 차 있는 이진트리완전 이진트리 (Complete Binary Tree)높이가 h일 때 레벨 1부터 h-1..
·Study/자료구조
탐색탐색: 테이블에서 원하는 탐색키를 가진 레코드를 찾는 작업맵, 딕셔너리: 탐색을 위한 자료구조, 엔트리 또는 키를 가진 레코드의 집합엔트리키: 영어 단어와 같은 레코드를 구분할 수 있는 탐색키값: 단어의 의미와 같이 탐색키와 관련된 값맵 ADT데이터: 키를 가진 레코드(엔트리)의 집합연산search(key): 탐색기 key를 가진 레코드를 찾아 반환insert(entry): 주어진 entry를 맵에 삽입delete(key): 탐색기 key를 가진 레코드를 찾아 삭제맵을 구현하는 방법리스트 이용: 정렬 / 비정렬 (가장 간단한 구현 방법)이진 탐색 트리 이용: 탐색 성능을 향상 시키고자 하는 경우해싱 구조 이용: 맵을 구현하기 가장 좋은 방법순차 탐색Sequential Search정렬되지 않은 배열에 ..
·Study/자료구조
정렬데이터를 순서대로 재배열하는 것가장 기본적이고 중요한 알고리즘비교할 수 있는 모든 속성들은 정렬의 기준이 될 수 있음오름차순(ascending)과 내림차순(descending)정렬 알고리즘의 종류정렬 장소에 따른 분류내부 정렬: 모든 데이터가 메인 메모리외부 정렬: 외부 기억 장치에 대부분의 레코드단순하지만 비효율적인 방법삽입, 선택, 버블 정렬 등복잡하지만 효율적인 방법퀵, 합, 병합, 기수정렬, 팀 등선택 정렬Selection Sort여러 데이터 중에서 가장 작은 값을 뽑는 작동을 반복하여 값을 정렬최솟값을 찾는 방법첫 번째 값을 현재 가장 작은 값으로 지정지정한 값을 다음 차례의 값과 비교하여 더 작은 값을 현재 가장 작은 값으로 변경하거나 유지마지막 값까지 비교를 마친 후 현재 가장 작은 값으..
김캣치
'Study/자료구조' 카테고리의 글 목록