목록CS/자료구조 (6)
지극히 개인적인 개발블로그
트리는 데이터 사이의 계층 관계를 나타내는 자료구조입니다. 노드가 왼쪽 자식과 오른쪽 자식을 갖는 트리를 이진트리라고 합니다. 이때 각 노드의 자식은 2명 이하만 유지해야 합니다. 루트부터 노드가 채워져 있으면서 같은 레벨에서는 왼쪽에서 오른쪽으로 노드가 채워져 있는 이진트리를 완전 이진트리라고 합니다. 위 예시또한 완전 이진트리라고 할 수 있습니다. import java.util.Comparator; public class BinTree { //노드 static class Node{ private K key; //키 값 private V data; //데이터 private Node left; //왼쪽 자식 노드 private Node right; //오른쪽 자식 노드 //생성자 Node(K key, V..
리스트는 데이터를 순서대로 나열한 자료구조 입니다. 그 중에서도 가장 간단한 구조를 선형 리스트또는 연결 리스트라고도 합니다. 선형 리스트는 배열 또는 포인터로 구현 가능 하지만 배열로 구현하는건 별로 추천드리지 않습니다. 쌓이는 데이터의 크기를 미리 알아야 한다. 데이터의 삽입, 삭제에 따라 데이터를 모두 옮겨야 하기 때문에 효율이 좋지 않다. 이 두가지가 커다란 단점이기 때문이죠. 그래서 포인터로 구현하는 선형 리스트를 알아보겠습니다. import java.util.Comparator; public class LinkedList { class Node{ private E data; private Node next; Node(E data, Node next){ this.data = data; this...
정렬알고리즘은 여러가지가 있는데 솔직히 왜 여러가지 쓰는지 모르겠습니다. 그냥 sort()쓰면 되는거 아닌가요? 근데 책은 샀고 책에 내용은 있으니 하기는 하겠습니다 버블 정렬은 이웃한 두 요소의 대소 관계를 비교하여 교환을 반복합니다. import java.util.Scanner; public class BubbleSort { static void swap(int[] a, int idx1, int idx2){ int t = a[idx1]; a[idx1] = a[idx2]; a[idx2] = t; } static void bubbleSort(int[] a, int n){ for(int i=0; ii; j--) if(a[j - 1] > a[j]) swap(a, j-1, j); } public static ..
재귀함수의 가장 대표적인 예라 할수 있지요. import java.util.Scanner; public class Factorial { static int factorial(int n){ if(n > 0) return n * factorial(n-1); else return 1; } public static void main(String[] args) { Scanner sc = new Scanner(System.in); System.out.printf("정수를 입력하시오:"); int x = sc.nextInt(); System.out.println(x+"의 팩토리얼 값은 "+factorial(x)+"입니다."); } } 최대공약수 구하는 재귀함수도 있습니다. import java.util.Scanner..
스택은 데이터를 일시적으로 저장하기 위해 사용하는 자료구조로, 데이터의 입력과 출력순서는 후입선출(LIFO)이다. public class IntStack { private int max; private int ptr; private int[] stk; public class EmptyIntStackException extends RuntimeException{ public EmptyIntStackException(){} } public class OverflowIntStackException extends RuntimeException{ public OverflowIntStackException(){} } public IntStack(int capacity){ ptr = 0; max = capacity;..
선형검색이란 요소가 직선모양으로 늘어선 배열에서 원하는 키 값을 갖는 요소를 만날 때까지 맨앞부터 순서대로 요소를 검색하는 방법을 말합니다. package Chap03; import java.util.*; public class SeqSearch { static int seqSearch(int[] a, int n, int key){ int i=0; while(true){ if(i == n) return -1; //검색 실패 if(a[i] == key) return i; //검색 성공 i++; } } public static void main(String[] args) { Scanner sc = new Scanner(System.in); System.out.printf("요솟수: "); int num = ..