알고리즘 22

java_깊이 우선 탐색 알고리즘_구현_22.07.01(day22)

// 깊이 우선 탐색 구현 - 스택방식 public void DFS(Vertex start) { //정점들을 저장할 스택 Stack stack = new Stack(); //탐색 시작 정점을 스택에 저장 stack.push(start); // 스택이 빌 때까지 깊이 우선 탐색수행 while(!stack.isEmpty()) { // 스택에서 정점을 꺼낸다. Vertex current = stack.pop(); // 해당 정점에 방문처리 current.setVisitFlag(true); // 방문한 정점의 데이터를 출력 System.out.printf("%s ", current.getData()); // 해당 정점에 연결되어 있는 다른 정점들을 찾아서 모두 스택에 저장 List connectedVertice..

알고리즘 2022.07.01

java_그래프 구현_22.07.01(day22)

package datastructure.chap11; // 정점 설계 [보관할 데이터를 담을 공간이라고 생각하면 된다.] public class Vertex { private int id; // 정점 고유 번호 private String data; //정점에 저장할 데이터 private boolean visitFlag; // 정점방문 여부 public Vertex(String data) { this.data = data; this.id = -1; } public int getId() { return id; } public void setId(int id) { this.id = id; } public String getData() { return data; } public void setData(Strin..

알고리즘 2022.07.01

java_트리 알고리즘 구현_22.06.23(day20)

package datastructure.chap10.binarytree; import java.util.Stack; class Node { private int data; // 트리에 저장할 데이터 private Node leftChild; // 왼쪽 자식 private Node rightChild; // 오른쪽 자식 public Node(int data) { this.data = data; } public int getData() { return data; } public void setData(int data) { this.data = data; } public Node getLeftChild() { return leftChild; } public void setLeftChild(Node leftCh..

알고리즘 2022.06.23

java_탐색(선형,이진 탐색)_22.06.16(day18)

# 이진 탐색은 매우 중요하니 코드를 통째로 외울 것! # package datastructure.cahp08; import java.util.Arrays; public class Search { // 선형 탐색 public static int linearSearch(int[] arr, int target) { for (int i = 0; i < arr.length; i++) { if (target == arr[i]) { return i; } } return -1; } // 이진 탐색 public static int binarySearch(int[] arr, int target) { // 왼쪽포인터, 오른쪽 포인터, 중앙포인터 선언 int left = 0; int right = arr.length - 1..

알고리즘 2022.06.16

java_정렬(퀵정렬)_22.06.15(day17)

package datastructure.chap07.quick; import java.util.Arrays; public class QuickSort { public static void sort(int[] a) { quickSort(a, 0, a.length - 1); } /** * 오른쪽 피벗 선택 방식 * * @param a 정렬할 배열 * @param leftmost 현재 부분배열의 왼쪽 * @param rightmost 현재 부분배열의 오른쪽 */ private static void quickSort(int[] a, int leftmost, int rightmost) { /* * leftmost가 rightmost보다 크거나 같다면 정렬 할 원소가 * 1개 이하이므로 정렬하지 않고 return한..

알고리즘 2022.06.16