Algorithm_PS/Algorithm_Data Structure 6

DataStructure : Union-Find

이런 서로 다른 트리들을 비교할때 어케해야할까의 고민두 집합에 속한 원소들은 중복되지 않고, 순서도 특정된게 없으니 1차원배열에 싹 다 저장한다.모든 집합의 원소 즉, 서로 다른 트리들의 원소를 0,1,2…,n-1로 넣으면 이를 1차원배열의 인덱스로 활용한다.이런 서로 다른 트리들을 비교할때 어케해야할까의 고민두 집합에 속한 원소들은 중복되지 않고, 순서도 특정된게 없으니 1차원배열에 싹 다 저장한다.모든 집합의 원소 즉, 서로 다른 트리들의 원소를 0,1,2…,n-1로 넣으면 이를 1차원배열의 인덱스로 활용한다.트리의 루트는 각 집합의 대표이다.루트의 배열 원소에는 루트 자식을 넣는다. ( 루트와 루트 자식은 같은 인덱스값)루트가 아닌 노드의 원소는 그 원소의 부모노드( 루트 아래아래 자식의 인덱스값은..

자료구조 : Comparator vs Comparable

Comparable인터페이스. 가지고 있는 메서드는 CompareTo()import 필요없다. java.lang에 위치해있기 때문.이러한 비교하는 인터페이스를 가져오는건 궁극적으로 비교도 있지만 정렬의 기준을 세우는 것이다.return 값은 0,1,-1이얌.class Student implements Comparable{..... 생성자, getter setter.... public int CompareTo(Student s){ return this.id-s.id; } //아니 그럼 이름과 같은 문자일땐 어떻게 비교하나요? //이런식으로 comapreTo내부에 compareTo를 써서 정렬의 기준을 잡아주면 됩니다. public int CompareTo(Student s){ return this...

About BinaryHeap

차근차근 여러가지 자료 구조들을  하나씩 소개해볼까 한다. 우선순위 큐?우선순위 큐(priority queue)는 자료 구조의 한 종류로서, 큐(queue)와 트리(tree) 두 개념 모두와 관련이 있다. 구체적으로 설명하자면: 큐와의 관계큐(queue)는 FIFO(First In, First Out) 방식으로 작동하는 자료 구조다. 즉, 먼저 들어온 요소가 먼저 나가는 구조인데 .우선순위 큐는 큐의 특수한 형태로, 각 요소가 우선순위를 가지며, 요소가 들어온 순서가 아니라 우선순위에 따라 나가는 방식이다. ( 들어온 순서가 아닌 우선순위를 매기는 방식) 우선순위가 높은 요소가 먼저 나갑니다.따라서, 우선순위 큐는 큐의 개념을 확장한 것으로 볼 수 있다.트리와의 관계우선순위 큐는 내부적으로 다양한 자료 ..

<카운팅 정렬>

입력되는 정수의 배열의 범위가 보장될때, 유용한 아주 간단하고 효율적인 좋은 알고리즘. package 정렬알고리즘; import java.io.*; //운팅 정렬(Counting Sort)은 정수 배열을 정렬하는 비교 없이 선형 시간에 수행되는 안정적인 정렬 알고리즘입니다 // 알고리즘은 입력 배열의 범위가 제한되어 있을 때 특히 유용합니다 public class 카운팅정렬 { public static void main(String[] args) throws IOException { int[] range = new int[10001]; BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int N = Integer.parse..

<선택 정렬 & 삽입 정렬>

두 정렬 모두 시간복잡도가 o(n^2)라 느리긴 하지만, 배워두면 쓸데가 있지 않을까 하고 포스팅해본다. 배열은 9 2 4 5 3 . 크기 5짜리라고 가정하자 1. 선택정렬 선택정렬의 컨셉은 간단히 말하면 최솟값을 0번째 인덱스에 집어 넣는다 생각해야한다. 첫번째 loop부터 살펴보자. i=0 & j = 1,2,3,4 i=0일때, minindex=0이겠다. 여기서 j=1,2,3,4로 움직이면서 첫번째 인덱스보다 다음인덱스가 작다면 minindex를 초기화하고 이를 j = 1,2,3,4 다 돌면 최종적으로 최소값을 지닌 인덱스가 나올 것이다. minindex = 1이라는 결론이 나오고. temp > arr[1] , arr[1] > arr[0] , arr[0] > temp( 즉 temp는 여기서 최솟값이겠다..

자료구조 <배열의 속성>

자료구조의 간략한 개념들을 JAVA로 학습을 해보자. 군휴학의 무료함을 달래주길. 자료구조의 모든 part는 객체이며 자바는 객체지향. 모든 흐름은 객체로.. 신입생때 뇌에 각인시키도록 학습했었다. 자료구조의 가장 basic하면서 중요한 type. 배열이다. 생성은 아래코드로 하는데 python과 다르게 JAVA는 상당히 피곤하게 아래처럼 배열의 데이터 타입과 크기를 꼭 지정해줘야한다. 위의 배열의 경우 10,20,30의 값만 선언해주었다. 하지만 네번째 인덱스에는 값을 넣어주지 않았다. 이럴때 numbers[3]을 해준다면.. 오류가 날까? 그렇지 않다. 크기엔 지정이됐지만 값이 없는 배열의의 값은 0으로 설정되어있다 자동으로 그래서 따로 주입하지 않아도 10 20 30 0 이 순서대로 저장되어있다 *..