728x90
728x90
트리(Tree)란? 자료 간의 관계가 계층 구조일 때 사용하는 비선형 자료구조이다. - 트리는 노드(node)로 이루어진 자료구조 - 트리는 하나의 루트 노드를 갖는다. - 루트 노드는 -개 이사의 자식 노드를 갖고 있다. - 그 자식 노드 또한 0개 이상의 자식 노드를 갖고 있고, 이는 반복적으로 정의된다. 트리(Tree)와 관련된 용어 부모 노드 & 자식 노드 = 서브 트리 같은 레벨 간 노드들 = 형제 노드 트리(Tree)의 특징 - 그래프의 한 종류이다. '최소 연결 트리'라고도 불린다. - 트리는 계층 모델이다. - 트리는 DAG(Directed Acycle Graphs, 방향성이 있는 비순환 그래프)의 한 종류이다. - 노드가 N개인 트리는 항상 N-1개의 간선(edge)을 가진다. - 루트에..
힙정렬(Heap sort)이란? 힙은 완전 이진 트리 구조를 가진 자료구조이다. 이 힙의 특성을 이용하여 정렬하는 것이 힙정렬(Heap sort)이다. - 최소값 혹은 최대값을 빠르게 가져오기 위해 고안됨. - 형제노드 사이에서는 아무런 대소 관계가 정해져 있지 않음. public void SortHeap() { int[] nArrData = { 20, 35, 15, 5, 40, 10, 25, 30 }; for (int i = (nArrData.Length - 1)/2; i >= 0; --i) { CalcHeap(nArrData, i, nArrData.Length); } for(int i = nArrData.Length - 1; i>0; --i) { SwapHeap(ref nArrData[i], ref ..
삽입정렬(Insertion sort)이란? 삽입정렬(Insertion sort)은 앞의 숫자가 나보다 큰지 비교하면서 자신의 위치에 삽입하는 정렬 방법이다. 앞의 값과 비교를 하기 때문에 전체 배열 중 0번 인덱스가 아닌 1번 인덱스부터 앞의 값과 비교한다. using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Insertion_sort { class Program { static void Main(string[] args) { Console.WriteLine("삽입정렬"); int[] nArrData = { 20, 15, 1, 5, ..
퀵정렬(Quick sort)이란? 퀵정렬은 피봇을 기준으로 작거나 같은 값을 지닌 데이터는 앞으로, 큰 값을 지닌 데이터는 뒤로 가도록 하여 작은 값을 갖는 데이터와 큰 값을 갖는 데이터로 분리해가며 정렬하는 방법이다. 1. 분할 정복 알고리즘 2. 일반적으로 빠른 알고리즘 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace quicksort { class Program { static int[] data = { 25, 15, 60, 45, 10, 20, 5, 30 }; static void Main(string[] args) { C..
버블정렬(Bubble sort)이란? 버블 정렬은 서로 이웃한 데이터들을 비교하며 가장 큰 데이터를 가장 뒤로 보내는 정렬방식이다. 1. 첫번째 데이터와 두번째 데이터를 비교하여 첫번째 값이 더 크면 두번째 데이터와 교환한다. 2. 두번째 데이터와 세번째 데이터를 비교하여 더 큰 수를 뒤로 보낸다. 3. 이렇게 끝까지 진행하면, 제일 큰 숫자가 맨 뒤로 가게 된다. 이렇게 계속 처음부터 n-1번째 데이터를 비교해서 정렬하 는 알고리즘이다. using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace BubbleSort { class Progr..
선택정렬(Selection sort)이란? 선택정렬은 정렬되지 않은 데이터들에 대해 가장 작은 데이터를 찾아 가장 앞의 데이터와 교환해 나가는 방식이다. 1. 리스트에서 최소값을 찾는다. 2. 최소값을 맨 앞의 값과 교체한다. (Swap) 3. 교체한 맨 앞의 데이터는 정렬된 것으로 간주하고 다음 인덱스부터 1, 2 행위를 끝까지 반복한다. using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace SelectionSort { class Program { static void Main(string[] args) { Console.WriteL..