1. 힙정렬이란?힙정렬(heap sort)은 힙(heap)을 사용하여 정렬하는 알고리즘.힙은 '부모의 값이 자식의 값보다 항상 크다'는 조건을 만족하는 완전이진트리이때 부모의 값이 자식보다 항상 작아도 힙이라고 합니다. (부모와 자식 요소의 관계만 일정하면 됨) 힙의 요소를 배열에 저장하면 부모와 자식의 인덱스 사이에 다음과 같은 관계가 성립합니다. 1) 부모는 a[(i-1)/2] 2) 왼쪽 자식은 a[i*2+1] 3) 오른쪽 자식은 a[i*2+2] 이제 힙정렬 해보겠습니다. 이런방법으로 계속 진행됩니다. 이제는 정렬되지 않은 배열을 힙으로 만들어보겠습니다.bottom-up 방식) - 힙 정렬의 시간 복잡도힙정렬은 선택정렬을 응용한 알고리즘입니다. 힙정렬에서는 첫 요소를 꺼내는 것만으로 가장 큰 값이 구..
WEB
1. 퀵 정렬(quick sort)- 리처드 호어(C. A. R. Hoare)가 붙인 이름- 분할 정복 알고리즘과 재귀 호출을 사용한 퀵 정렬 - 작업수행 절차 A. 스캔 1) a[pl] >= x가 성립하는 요소를 찾을 때까지 pl을 오른쪽으로 스캔 2) a[pr] 스택의 용량 : 분할시 요소의 개수가 적은 배열일수록 적은 획수로 분할을 종료할 수 있다. 그리고 스택에 쌓여 있는 데이터의 최대 개수를 줄일수 있따. 만약 배열의 요소 개수가 $n$개라면 스택에 쌓이는 데이터의 최대 개수는 $log{n}$보다 적다.-> 피벗 선택 : 만약 데이터가 a[0] ~ a[8]개 있다면 a[0] = left, a[8] = right, a[4] 는 마지막 요소인 a[8]보다 1개 적은 a[7]과 데이터를 교환하고 pl..
- 내부 정렬 : 정렬한 모든 데이터를 하나의 배열에 저장할 수 있는 경우에 사용하는 알고리즘- 외부 정렬 : 정렬할 데이터가 너무 많아서 하나의 배열에 저장할 수 없는 경우에 사용하는 알고리즘- 정렬 알고리즘의 핵심 요소 : 교환, 선택, 삽입이며 대부분의 정렬 알고리즘은 이 세 가지 요소를 응용한것1. 버블정렬(bubble sort) : 이웃한 두 요소의 대소관계를 비교하여 교환을 반복 2. 단순 선택 정렬(straight selection sort) : 가장 적은 요소부터 선택해 알맞은 위치로 옮겨서 순서대로 정렬하는 알고리즘 3. 단순 삽입 정렬(straight insertion sort) : 선택한 요소를 그보다 더 앞쪽의 알맞은 위치에 '삽입하는' 작업을 반복하여 정렬하는 알고리즘 - 시간복잡..
출처 : https://jsonobject.tistory.com/395 Oracle JDK와 OpenJDKJava 애플리케이션을 실행하기 위해서는 JVM이 필요하고 컴파일하기 위해서는 JDK가 필요하다. 일반적으로 JDK를 설치하면 JVM(Hotspot이라고도 표현, Java 기술의 핵심)도 함께 설치된다.JDK는 2개 버전으로 나뉜다. 하나는 폐쇄적인 상업 코드 기반의 Oracle JDK이고 하나는 오픈 소스 기반의 OpenJDK이다.둘 간의 큰 차이라면 Oracle JDK는 OpenJDK에는 없는 재산권이 걸린 플러그인을 제공한다. 해당 플러그인은 Oracle이 재산권을 보유하고 있다. (보다 정확히 설명하면 Oracle이 인수하여 없어진 Sun Microsystems 시절의 유산이다.) [관련 링크..
1. 큐- 스택과 마찬가지로 데이터를 일시적으로 쌓아 두기 위한 자료구조- 가장 먼저 넣은 데이터를 가장 먼저 꺼내는 선입선출(queue) 구조- 큐에 데이터를 넣는 작업을 인큐(enqueue)- 데이터를 꺼내는 작업을 디큐(dequeue)- 데이터를 꺼내는 쪽을 프런트(front)- 데이터를 넣는 쪽을 리어(rear)- IntQueue.java - IntQueueTester.java 실행결과) 2. 재귀의 기본- 재귀란?: 어떤 사건이 자기 자신을 포함하고 다시 자기 자신을 사용하여 정의될떄 재귀적(recursive)이 라고 한다. - 팩토리얼(factorial) - 유클리드 호재법(Euclidean method of mutual division) - 재귀 알고리즘의 분석하기 위한 하향식(top dow..