Bubble sort 개념 주어진 파일에서 인접한 두 개의 데이터를 비교하여 앞의 데이터가 크다변 두 데이터의 위치를 서로 교환하는 정렬 방식이다. 평균과 최악의 시간복잡도는 O($n^2$)이다. 예시 Java 구현 코드
Selection Sort 개념 n개의 데이터 중에서 최소값을 찾아 첫 번째 데이터 위치에 놓고, 나머지 (n-1) 개 중에서 다시 최소값을 찾아 두 번째 데이터 위치에 놓는 방식을 반복하여 정렬하는 방식이다. 평균과 최악의 시간복잡도는 O($n^2$)이다. 예시 Java 구현 코드
Insert Sort 개념 이미 순서화된 데이터에 새로운 하나의 데이터를 순서에 맞게 삽입시켜 정렬하는 방식이다. 가장 간단한 정렬방식이다. 평균과 최악의 시간복잡도는 O($n^2$)이다. 예시 Java 구현 코드
Merge Sort 개념 재귀용법을 활용하여 재귀적으로 리스트를 절반으로 자른 후 데이터를 순서에 맞게 합쳐가며 정렬하는 방법이다. 데이터를 절반으로 나눈다. (Recursive하게 반복) 두개로 나눠진 list의 가장 앞에 위치한 데이터들을 비교후 가장 작은 데이터를 새로운 빈 리스트에 추가를 하며 정렬된 하나의 리스트를 만든다. ...
Quick Sort 개념 기준점(pivot)을 정한 후, 기준점을 기준으로 기준점보다 작은 데이터는 왼쪽, 큰 데이터는 오른쪽으로 분류하는 작업을 재귀적으로 반복하여 정렬하는 알고리즘이다. 기준점(pivot)을 정한다. (보통 가장 왼쪽이나 가장 오른쪽으로 정한다.) 기준점보다 큰 데이터는 left list로, 큰 데이터는 right list로 ...
동적 계획법 (Dynamic Programming) 문제를 해결하기 위해 문제를 하위문제로 나누어, 가장 최하위의 답을 구한 후, 그 결과값을 이용하여 상위 문제를 풀어가며 최종적으로 전체 문제를 해결하는 알고리즘이다. 문제를 상향식 접근법으로 해결하는 방법이다.
Binary Search (이진 탐색) 이진 탐색이란? Binary Search는 오름차순으로 정렬된 리스트내에서 특정 값을 찾아내는 알고리즘이다.
BFS(Breadth First Search)란? BFS는 DFS와 함께 대표적인 그래프 탐색 알고리즘으로, node들과 같은 레벨에 위치한 node들 먼저 탐색을 해나가는 방법이다.
DFS(Depth First Search)란? DFS는 BFS와 함께 대표적인 그래프 탐색 알고리즘으로, node의 자식들을 먼저 탐색을 해나가는 방법이다.
최단경로 알고리즘 최단 경로 알고리즘이란 두개의 Node를 잇는 가장 짦은 경로를 찾는 알고리즘이다. 가중치 그래프와 간선의 가중치의 합이 최소가 되도록 하는 경로를 찾는게 목적이다.
Kruskal's algorithm은 대표적인 MST알고리즘으로 Edge를 가중치에 따라 정렬한 후 가중치가 낮은 Edge부터 cycle이 생기지 않는다면 연결하는 방법으로 진행된다.
프림 알고리즘은 시작 Node를 선택한 후, 해당 Node에 연결된 가중치가 가장 작은 edge에 연결된 node를 cycle이 생기지 않는다면 연결하고, 다시 연결되어진 node들에 연결되어 있는 edge중에서 가장 가중치가 작은 edge를 찾는 방법을 반복하며 진행