CS 공부 2

[CS-알고리즘] 병합 정렬에 대해서

병합 정렬이란?- 안정 정렬에 속하는 분할 정복 알고리즘의 하나.- 하나의 리스트를 두 개의 균등한 크기로 분할하고 부분 리스트를 정렬한 후 두 개의 정렬 리스트를 합하여 전체 정렬된 리스트가 되도록 하는 방법- 평균 및 최악의 경우에 O(n log n) 시간 복잡도를 가지며 공간 복잡도는 추가 배열을 위해 O(n)이다.병합 정렬의 과정Divide(분할) : 정렬할 배열을 두 개의 하위 배열로 나누고 나눌 수 없을 때까지 반복 (1개 또는 0개 요소를 가질 때까지)Cinquer(정복) : 각 하위 배열이 정렬될 상태로 만들어질 때까지병합 Combine(결합) : 두 개의 정렬된 하위 배열을 하나로병합 Java 예제import java.util.Arrays;public class Main { public ..

[CS 자료구조] 이진 트리에 대해서

기본 용어 정리Node(노드) : 트리의 각 요소Root(루트) : 최상단 노드Parent(부모) : 자식 노드를 가진 노드Child(자식) : 다른 노드의 자식Leaf(잎) : 자식이 없는 노드Subtree(서브트리) : 특정 노드를 루트로 하는 트리전위 순회(preorder traverse) : Root먼저 방문 (Root -> Left Child-> Right Child... )중위 순회(inorder traverse) : Left Child -> Root -> Right Child후위 순회(postorder traverse) : Left Child -> Right Child -> Root이진트리란?각 노드가 최대 두 개(0,1,2)의 자식을 가지는 트리 자료구조.효율적인 검색, 삽입, 삭제 연산을..