MySQL datetime 날짜로 select하기

MySQL datetime 날짜로 select하기 select 컬럼명 from 테이블명 where date(컬럼명)='2018-01-23'; select 컬럼명 from 테이블명 where 컬럼명 between '2018-01-20' and '2018-01-24'; 위의 2가지 방법이 가장 기본적인 쿼리이다.

JAVA 힙 정렬 알고리즘

힙 정렬 Heapsort



힙 정렬(Heapsort)이란 최대 힙 트리나 최소 힙 트리를 구성해 정렬을 하는 방법으로서, 내림차순 정렬을 위해서는 최대 힙을 구성하고 오름차순 정렬을 위해서는 최소 힙을 구성하면 된다. 최대 힙을 구성하여 정렬하는 방법은 아래 예와 같다.
  1. n개의 노드에 대한 완전 이진 트리를 구성한다. 이때 루트 노드부터 부노드, 왼쪽 자노드, 오른쪽 자노드 순으로 구성한다.
  2. 최대 힙을 구성한다. 최대 힙이란 부노드가 자노드보다 큰 트리를 말하는데, 단말 노드를 자노드로 가진 부노드부터 구성하며 아래부터 루트까지 올라오며 순차적으로 만들어 갈 수 있다.
  3. 가장 큰 수(루트에 위치)를 가장 작은 수와 교환한다.
  4. 2와 3을 반복한다.

이진 트리를 최대 힙으로 만들기 위하여 최대 힙으로 재구성 하는 과정이 트리의 깊이 만큼 이루어 지므로 의 수행시간이 걸린다. 구성된 최대 힙으로 힙 정렬을 수행하는데 걸리는 전체시간은 힙 구성시간과 개의 데이터 삭제 및 재구성 시간을 포함한다. 시간 복잡도는
              = (log n+log(n-1)+...+log 2) 
            = (log n+log(n-1)+...+log 2)+(log n+log(n-1)+...+log 2)
            = O(n*log n)
따라서 힙 정렬은 일반적인 경우 의 시간복잡도를 가진다.
위키 피디아 참조.


자바 코드

public class JAVAHeap{

public static void main(String[] args) {

int[] arr = { 69, 10, 30, 2, 16, 8, 31, 22 };

HeapSort(arr);

}


public static void HeapSort(int[] arr) {

JAVAHeap heap = new JAVAHeap();


for (int i = 0; i < arr.length; i++) {

heap.insertHeap(arr[i]);

}


for (int i = arr.length - 1; i >= 0; --i) {

arr[i] = heap.deleteHeap();


}

System.out.println("힙 정렬");

for (int i = 0; i < arr.length; i++) {

System.out.println(arr[i]);

}

}


private int heapSize;

private int itemHeap[];


public JAVAHeap() {

heapSize = 0;

itemHeap = new int[50];

}


public void insertHeap(int item) {

int i = ++heapSize;


while ((i != 1) && (item > itemHeap[i / 2])) {

itemHeap[i] = itemHeap[i / 2];

i /= 2;

}


itemHeap[i] = item;

}


public int getHeapSize() {

return this.heapSize;

}


public int deleteHeap() {

int parent, child;

int item, tmp;

item = itemHeap[1];

tmp = itemHeap[heapSize--];

parent = 1;

child = 2;


while (child <= heapSize) {

if ((child < heapSize) && (itemHeap[child] < itemHeap[child + 1]))

child++;


if (tmp >= itemHeap[child])

break;


itemHeap[parent] = itemHeap[child];

parent = child;

child *= 2;

}


itemHeap[parent] = tmp;

return item;

}

}

댓글

이 블로그의 인기 게시물

3계층 구조( 3 Tier Architecture )

GET방식과 POST방식이란? ( PHP )

MySQL Index태우기가 뭐에요?