본문 바로가기

728x90
반응형

Major-

(864)
[알고리즘] 3-1. 기본 정렬 버블, 삽입, 선택 정렬 간단하지만, 느리다 퀵, 병합, 힙 정렬 빠르다 기수 정렬 (radix) O(N) 정렬 1. 최대 원소 찾기 2. 최대 원소와 맨 오른쪽 원소와 교환 3. 맨 오른쪽 원소 제외 4. 하나의 원소만 남을 때까지 반복 //선택정렬 selectionSort (A[], n) { for last
[알고리즘] 2-2. 순열 순열 (Permutation) -> 가능한 열의 순서 (n개면 n!) 첫 번째 원소를 임의로 지정하고, 나머지의 순열을 출력 -> 지정하는 원소의 개수를 하나씩 늘려가면서 순열 출력 즉, 집합 S의 각 원소 x에 대해서 S-{x}의 모든 순열을 생성 후, 각각의 맨 앞에 x를 추가해 출력한다. 순환함수가 데이터 변경시, 호출 전후에 데이터가 변경되지 않고 유지되도록 정의 [데이터의 동일성 유지] -> data [0...k-1]을 prefix로, data[k..n]으로 만들 수 있는 모든 순열을 출력 -> 단, 배열 data에 저장된 값들의 순서는 그대로 유지 char data[] = {'a','b','c','d'}; int n=4; void perm(int k) { if (k==n) { print dat..
[알고리즘] 2-1. 멱집합 멱집합 (Powerset) n개의 원소를 갖는 집합은 2^n개의 부분집합을 갖는다. -> 부분집합에 원소를 추가한 집합들을 나열 [합집합 이용] 즉, S의 멱집합을 구한 후 각각에 집합 P를 합집합해 출력 -> 순환 함수가 두 개의 집합을 매개변수로 받도록 설계 후, 두 번째 집합의 모든 부분집합에 첫 번째 집합을 합집합해 출력 집합 S : k번째부터 n-1번째 원소를 가지는 집합 집합 P : 0번째부터 k-1번째 원소를 가지는 집합 //1. 멱집합 (Powerset) //상태공간트리 이용 private static char data[] = {'a','b','c','d','e','f'}; private static int n = data.length; private static boolean[] incl..
[알고리즘] 1-3. 재귀함수 활용 암시적 매개변수를 명시적 매개변수로 -> //1. 순차 탐색 int search(int [] data, int n, int target) { for (int i=0; i end) return -1; else if (target == data[begin]) return begin; else return search(data, begin + 1, end, target); } //data[begin]에서 data[end]까지 target을 검색 : 검색구간 시작점을 명시적 // search(data, 0, n-1, target)이면 1.과 같은 함수 //end 생략시 int search (int [] data, int begin, int target) { if (begin > data.length-1) ret..
[알고리즘] 1-2. 재귀함수 응용 수학적 계산 외에도 사용하는 재귀함수 모든 순환함수는 반복문으로 변경 가능 -> 성능을 위해 모든 반복문은 순환함수로 변경 가능 -> 단순화를 위해 [함수 호출에 따른 성능 저하 발생 가능하므로] 문자열 길이 계산 문자열 출력 문자열 뒤집어 출력 2진수로 변환 출력 배열의 합 구하기 데이터 파일로부터 n개의 정수 읽어오기 //1. 문자열 길이 계산 //이전 문자열 길이 +1 public static int length(String str) { if (str.equals("")) return 0; else return 1+ length(str.substring(1)); } //2. 문자열 출력 public static void printChars (String str) { if (str.length() =..
[알고리즘] 1-1. 재귀 함수 기본 재귀함수는 다시 반복되는 함수 -> 재귀함수를 쓰기 위해선 무한루프에 안빠지도록 설계 즉, 적어도 재귀함수에 빠지지 않는 한 가지의 경우의 수를 존재하도록 기본 구조 1~n까지의 합 n! X^n 피보나치 수열 최대 공약수 간단한 유클리드 함수 //1. 기본 구조 public static void func(int k){ if (k1인 경우) public int fibonacci (int n) { if (n
[Oracle] 1. SELECT문 처리과정 1. Server Process 구조 유저 프로세스 -> 서버 프로세스로 SELECT문 요청시 서버 프로세스에서 SELECT문 처리 과정에 따라 처리 서버 프로세스 구조 공유메모리 영역과 백그라운드 프로세스 영역으로 나뉘어져 있다. 공유메모리 영역 -> SGA SGA -> 공유 풀, DB 버퍼 캐시, 리두 로그 버퍼 공유 풀 메모리 -> 라이브러리 캐시영역, 로우 캐시영역 라이브러리 캐시 영역 : SQL문장 실행 정보를 관리 로우 캐시 영역 : 오브젝트 딕셔너리 정보가 로우단위로 저장 백그라운드 프로세스 영역 -> 인스턴스와 데이터베이스 인스턴스에는 DBWn, SMON, CKPT, PMON, LGWR 데이터베이스에는 컨트롤 파일, 데이터 파일, 온라인 리두 로그 파일 2. Select문 처리 과정 [공유..
[SQLP] 7-1. 통계정보와 비용 계산 원리 통계정보에 해당하는 항목과 옵티마이저가 통계정보를 활용해 비용을 계산하는 원리 1. 선택도와 카디널리티 선택도 전체 레코드 중에서 조건절에 의해 선택되는 레코드 비율 '=' 조건 검색시 선택도 = 1 / NDV (컬럼 값 종류 개수) 카디널리티 전체 레코드 중에서 조건절에 의해 선택되는 레코드 개수 카디널리티 = 총 로우 수 x 선택도 = 총 로우 수 / NDV 조건절에 대한 선택도가 25%일 때, 전체 레코드가 10만 건이라면, 카디널리티는 2만 5천건이다. 옵티마이저는 조건절에 의해 카디널리티를 구하고, 그만큼의 데이터를 액세스하는 데 드는 비용을 계산해 테이블 액세스 방식, 조인 순서, 조인 방식을 결정한다. 이처럼 비용을 계산하는데에는 선택도부터 시작되기 때문에, 선택도를 정확히 계산해야 한다. ..

728x90
반응형