반응형

알고리즘 6

[Algorithm] 정렬 - 병합 정렬(Merge Sort)

#요약 현대 컴퓨터의 아버지 '존 폰 노이만'이 제안 분할 정복(Divid & Conquer)의 전략을 도입 문제를 작은 문제로 분리하고 각각 해결한 후에, 결과를 모아서 원래 문제를 해결하는 전략 순환 호출을 구현 리스트의 길이가 0 OR 1일때 이미 정렬된 것 정렬되지 않는 리스트들 절반으로 잘바 비슷한 크기의 두 부분 리스트로 나눔 ➡️ Divid 각 부분 리스트를 재귀적으로 병합 정렬을 이용해 정렬 ➡️ Conquer 두 부분 리스트를 다시 하나의 정렬된 리스트로 병합 ➡️ Combine #구체적 설명 하나의 데이터 배열을 균등하게 절반으로 나눈다. 나누어진 2개의 배열을 정렬한다. 분할: 입력 배열을 2개의 부분 배열로 분할한다. 정복: 부분 배열을 정렬한다. 부분 배열의 크기가 충분히 작지 않..

Algorithm/Concept 2023.11.14

[Algorithm] 정렬 - 삽입 정렬(Insertion Sort)

#요약 Target과 그 이전 데이터들과 비교하며 정렬한다. 소규모 데이터에 효율적이다. #구체적 설명 두번째 요소부터 시작하여 배열을 순회 현재 요소를 Target이라고 하고, Target 이전의 요소들과 비교 Target이 이전 요소보다 작으면, 이전 요소를 한 칸 뒤로 이동 이를 Target이 이전 요소들보다 크거나 같을 때까지 반복하고, Target을 적절한 위치에 삽입 모든 요소에 대해 위 과정을 반복 #알고리즘 #코드 작성 import java.util.Arrays; public class SortAlgorithm { static int[] arr = new int[]{7, 1, 3, 2, 4, 5, 6}; static int cnt = 0; public static void main(Stri..

Algorithm/Concept 2023.11.13

[Algorithm] 정렬 - 선택 정렬(Selection Sort)

# 요약 인간이 정렬하는 과정과 매우 비슷 데이터를 한번에 읽고 정렬 진 # 구체적 설명 주어진 데이터 리스트 중에 최솟값을 찾는다. 그 값을 맨 앞에 위치한 값과 교체한다. 맨 처음 위치를 뺀 나머지 리스트를 같은 방법으로 교체한다. # 알고리즘 # 코드 작성 - JAVA import java.util.Arrays; public class SortAlgorithm { static int[] arr = new int[]{7, 1, 3, 2, 4, 5, 6}; static int cnt =0; public static void main(String[] args) { selectionSort(arr); System.out.println(Arrays.toString(arr)); } private static ..

Algorithm/Concept 2023.11.13

[Algorithm] 정렬 - 칵테일 정렬(Cocktail Sort)

# 요약 버블 정렬의 파생형 정렬 양방향 버블 정렬이 이루어진다. 마치 양쪽에서 흔드는것처럼 보여서 칵테일 혹은 쉐이커 정렬이라고 불린다. # 구체적 설명 홀수 번째 돌때는 앞부터, 짝수번째를 돌때는 뒤부터 훑는다. 제일 처음에 하나, 제일 뒤에하나, 다시 제일 앞에 하나를 정렬하면서 마치 정렬하는 과정이 앞뒤로 흔드는 것처럼 보인다. 1회전을 수행하고 나면 오름차순, 내림차순에 따라 자료가 정렬이 진행된다. # 알고리즘 # 코드 작성 - JAVA import java.util.Arrays; public class SortAlgorithm { static int[] arr = new int[]{7, 1, 3, 2, 4, 5, 6}; public static void main(String[] args) {..

Algorithm/Concept 2023.11.11

[Algorithm] 정렬 - 버블 정렬(Bubble Sort)

# 요약 서로 인접한 두원소를 검사하여 정렬하는 알고리즘 인접한 2개의 데이터를 비교하여 크기가 순서대로 되어있지 않으면 SWAP한다. 선택 정렬과 기본 개념이 유사 # 구체적 설명 버블 정렬은 1번째 데이터와 2번째 데이터, 2번째 데이터와 3번째 데이터, 3번째 데이터와 4번째 데이터를 비교한다. 즉, n과 n+1을 비교하며 조건에따라 SWAP을 진행한다.. 1회전을 수행하고 나면 오름차순, 내림차순에 따라 자료가 정렬이 진행된다. # 알고리즘 # 코드 작성 - JAVA import java.util.Arrays; public class sort_bubble { static int[] arr = new int[]{7, 1, 3, 2, 4, 5, 6}; //정렬 대상 public static void ..

Algorithm/Concept 2023.11.10

[Algorithm] 탐색 - DFS와 BFS

DFS와 BFS란? 일단, 항상 공부하기전에 용어를 정리하는 습관을 기르고자 합니다. DFS(Depth-First Search) : 깊이 우선 탐색 BFS(Breadth-First Search) : 너비 우선 탐색 말그대로, 깊이 먼저 탐색하냐, 너비 먼저 탐색하냐 차이인거 같아요 그렇다면 뭘 탐색할까요? 그래프(Graph) 탐색 알고리즘 입니다. 하나의 정점으로부터 시작하여 차례대로 모든 정점들을 한 번씩 방문하는 것 DFS와 BFS는 대표적인 그래프 탐색 알고리즘 입니다. DFS의 동작 원리 깊이 우선 탐색 답게 깊이를 우선적으로 탐색합니다. 수직적 탐색 이라고 생각하면 쉬울것 같네요 이렇게 수직 방향으로 탐색을 하게 됩니다. Java를 통해 구현해볼까요?? import java.util.Linked..

Algorithm/Concept 2023.09.22
반응형