전체 글 23

정렬 (삽입정렬과 퀵정렬)

정렬 삽입 정렬 응용 삽입 정렬의 알고리즘에 대해 간단히 요약해보면 자료 배열의 모든 요소를 앞에서부터 차례로 이미 정렬된 배열 부분과 비교하여, 자신의 위치를 찾아 삽입함으로써 정렬을 완성하는 알고리즘이다. 매 순서마다 해당 원소를 삽입할 수 있는 위치를 찾아 해당 위치에 삽입하는 것이다. 삽입 정렬 알고리즘의 구체적 아이디어 삽입 알고리즘은 리스트 내에서 정렬된 부분과 아직 정렬되지 않은 부분으로 나뉜다. 그래서 반복문을 두번 사용하는 것이 보편적인데 일단 전체 자료를 탐색하기 위한 포문을 하나 만들고 그 내부에 현재 비교할 자료를 정렬된 부분에 끼워주기 위한 반복문을 만들어준다. 2. 소스코드 while int* Insertion_sort(int* random_data, int n) { for (i..

학과 공부 2021.06.03

prim 알고리즘

신장트리란? 신장트리란 연결 그래프의 부분 그래프이다. 그래프는 속도는 높지만 사이클이 존재하므로 비용이 많이 들게 된다. 신장트리는 사이클이 존재해서는 안되므로 속도측면에서는 그래프보다 뒤떨어질 수 있어도 비용 측면에서 그래프보다 우세하다. 정리해보면 신장트리에서 모든 노드는 적어도 하나의 간선에 연결되어 있어야 하며 그 대신에 사이클이 형성되면 안된다. 최소 비용 신장 트리란? 그래프의 간선에 가중치가 부여된 그래프를 가중치 그래프 또는 네트워크라고 한다. 이때 가중치란 비용이나 거리를 의미하는 값이 될 수 있다. 가중치가 부여된 무방향 그래프의 신장 트리 비용은 신장트리를 구성하는 모든 간선의 비용을 합한 것이다. 여기서 말하는 최소 비용 신장트리는 트리를 구성하는 간선들의 가중치를 합한 것이 최소..

학과 공부 2021.06.02

그래프기초

그래프 (graph) 그래프는 일반적인 자료구조이며 트리도 그래프의 일종이다. 그래프는 오일러에 의해 창안 되었으며 오일러 문제란 모든 다리를 한번만 건너서 처음 출발 장소로 돌아오는 문제를 말한다. 그래프를 다리에 대입해 본다면 위치 : 정점 (node) ,다리 : 간선 (edge) 라고 할 수 있다. 오일러의 경로는 정점에 연결된 간선의 개수가 짝수일 때 존재한다. 인접 행렬 인접행렬은 그래프간의 연결 관계를 이차원 배열로 나타내는 방식이다. 그래프 F 는 n >= 1 (n 은 정점의 수) 이라고 하였을 때 그래프 F에 대한 인접행렬의 크기는 n*n 이다. $$ adj[i][j] : 노드 i 에서 노드 j로 가는 간선이 있다면 1, 아니라면 0 $$ 1) 무방향 인접 행렬 무방향 인접 행렬은 간선간의..

학과 공부 2021.06.02