'Computer Science/Data Structures & Algorithms' 카테고리의 글 목록 (9 Page) — Archive

Computer Science/Data Structures & Algorithms

Computer Science/Data Structures & Algorithms

[Data Structures] Optimal Binary Search Tree | 최적 이진 검색 트리

Optimal Binary Search Tree (OBST) 최적 이진 검색 트리 Definitions (정의) Node Structure (노드의 구조) - \(\texttt{key}\) : 검색 대상이 되는 원소로, key는 검색 가능한 Ordered Set의 원소이어야 한다. - \(\texttt{probability}\) : 해당 노드의 key를 검색하게 될 확률이다. (\(p_{i}\) = \(Node_{i}\)를 검색할 확률) - \(\texttt{leftChild}\) : 해당 노드의 왼쪽 자식 노드를 가리키는 주솟값이다. - \(\texttt{rightChild}\) : 해당 노드의 오른쪽 자식 노드를 가리키는 주솟값이다. Average Search Time (AST, 평균 검색 시간) -..

Computer Science/Data Structures & Algorithms

[Algorithms] Counting Sort | 계수 정렬

Counting Sort 계수 정렬 - 정렬하고자 하는 원소들의 값이 \(O(n)\)을 넘지 않는 경우에 사용할 수 있는 알고리즘이다. (즉, 모든 입력값들이 입력의 개수를 넘지 않아야 한다.) - Time Complexity = \(\Theta(n)\) Mechanism (메커니즘) - 입력 배열 \(\texttt{A[1...n]}\)의 원소들을 차례대로 살펴보면서 \(1\)부터 \(k\)까지의 자연수가 각각 몇 번 나타나는지를 Counting한다. - 입력값들의 입력 빈도를 Counting함으로써 \(\texttt{A[]}\)의 각 원소가 몇 번째에 위치하는지를 계산할 수 있게 된다. Pseudo Code (의사 코드) countingSort(A[], B[], n) { // 입력 배열 A[1...n]..

Computer Science/Data Structures & Algorithms

[Algorithms] Radix Sort | 기수 정렬

Radix Sort 기수 정렬 - 입력값들을 자릿수별로 정렬시켜 나가는 알고리즘이다. - 입력이 모두 \(k\) 자릿수 이하의 자연수인 특수한 경우에 사용할 수 있다. - Time Complexity = \(\Theta(n)\) - 입력에 제한이 있는 특수 정렬 알고리즘으로, 제한이 있는 대신 비교 정렬 알고리즘보다 좋은 성능의 수행 시간을 보인다. Mechanism (메커니즘) - 입력값들의 아랫 자릿 수 부터 정렬해나아간다. - Stable Sort* 특성을 보인다. - 각 자릿수별로 정렬 시에, 기존의 비교 정렬 알고리즘을 사용하지 않고, 0~9까지 표시된 공간을 마련해서 해당 자릿수와 일치하는 원소를 저장하는 방식으로 구현한다. (이 원리가 지켜져야 기수 정렬이 입력값에 제한을 두는 대신 다른 비..

Computer Science/Data Structures & Algorithms

[Algorithms] Six-Comparison Sort | 여섯 가지 비교 정렬 알고리즘

Six-Comparison Sort 여섯 가지 비교 정렬 알고리즘 - 비교 정렬 알고리즘은 최악의 경우 수행 시간이 절대 \(\Omega(n\log n)\)을 밑돌 수 없다. (이 명제에 대한 증명은, 본 포스트 아래에 결정 트리 모델을 참고하자.) - 여섯 가지 비교 정렬 알고리즘에 대한 설명은 아래 포스트를 참조하자. 1. Selection Sort (선택 정렬) 2. Bubble Sort (버블 정렬) 3. Insertion Sort (삽입 정렬) 4. Merge Sort (병합 정렬) 5. Quick Sort (퀵 정렬) 6. Heap Sort (힙 정렬) Decision Tree Model (결정 트리 모델) - 정렬할 원소끼리의 대소 비교 과정을 트리로 표현하는 데 이용되는 모델이다. - 노드..

Computer Science/Data Structures & Algorithms

[Algorithms] Heap Sort | 힙 정렬

Heap Sort 힙 정렬 - Heap(특수 형태 Binary Tree 구조)을 정렬에 이용한 알고리즘이다. - Heap의 형태로 Max Heap(최대힙), Min Heap(최소힙) 둘 다 관계없으나, 본 포스트에서는 Min Heap을 이용한 방법을 설명한다. * Comparison Sort Algorithms (비교 정렬 알고리즘) Selection Sort (선택 정렬) (URL) Bubble Sort (버블 정렬) (URL) Insertion Sort (삽입 정렬) (URL) Merge Sort (병합 정렬) (URL) Quick Sort (퀵 정렬) (URL) Heap Sort (힙 정렬) (URL) Background (배경지식) - Heap은 Complete Binary Tree(완전 이진 트..

Computer Science/Data Structures & Algorithms

[Algorithms] Quick Sort | 퀵 정렬

Quick Sort 퀵 정렬 - 퀵 정렬은 고급 정렬 알고리즘 중 평균 성능이 가장 뛰어나서 실무에서 가장 많이 사용되는 알고리즘이다. - Time Complexity: 평균적으로 \(\Theta(n\log n)\), 최악의 경우 \(\Theta(n^2)\) * Comparison Sort Algorithms (비교 정렬 알고리즘) Selection Sort (선택 정렬) (URL) Bubble Sort (버블 정렬) (URL) Insertion Sort (삽입 정렬) (URL) Merge Sort (병합 정렬) (URL) Quick Sort (퀵 정렬) (URL) Heap Sort (힙 정렬) (URL) Mechanism (메커니즘) - 정렬할 배열 내에서, 기준 원소(초록, Pivot Item)를 정..

Computer Science/Data Structures & Algorithms

[Algorithms] Merge Sort | 병합 정렬

Merge Sort 병합 정렬 - Divide and Conquer 알고리즘 중 하나로, 정렬된 배열을 합쳐가며 정렬하는 알고리즘이다. - Time Complexity : 최악의 경우 \(\Theta(n\log n)\) * Comparison Sort Algorithms (비교 정렬 알고리즘) Selection Sort (선택 정렬) (URL) Bubble Sort (버블 정렬) (URL) Insertion Sort (삽입 정렬) (URL) Merge Sort (병합 정렬) (URL) Quick Sort (퀵 정렬) (URL) Heap Sort (힙 정렬) (URL) Mechanism (메커니즘) - 배열 \(\texttt{A[1 ... n]}\)*을 재귀를 통해 요소가 하나가 될 때 까지 계속해서 절반..

Computer Science/Data Structures & Algorithms

[Algorithms] Insertion Sort | 삽입 정렬

Insertion Sort 삽입 정렬 - 선택 정렬과 버블 정렬과 달리, 삽입 정렬은 한 개 짜리 원소의 배열부터 시작하여 그 크기를 하나씩 늘려가는 방식으로 정렬한다. * Comparison Sort Algorithms (비교 정렬 알고리즘) Selection Sort (선택 정렬) (URL) Bubble Sort (버블 정렬) (URL) Insertion Sort (삽입 정렬) (URL) Merge Sort (병합 정렬) (URL) Quick Sort (퀵 정렬) (URL) Heap Sort (힙 정렬) (URL) Mechanism (메커니즘) - 배열 \(\texttt{A[1 ... n]}\)*에서 맨 왼쪽 원소부터 부분 배열에 하나씩 추가하고, 추가된 원소는 부분 배열의 모든 원소들과 대소관계를 ..

lww7438
'Computer Science/Data Structures & Algorithms' 카테고리의 글 목록 (9 Page)