[알고리즘]퀵 정렬(Quick Sort)
·
CS 지식/[알고리즘]
퀵 정렬 문제를 작은 2개의 문제로 분리하고 각각을 해결한 다음, 결과를 모아서 원래의 문제를 해결하는 전략 스택 필요 분할과 정복을 통해 자료를 정렬 평균 수행 시간 복잡도는 O(nlog2n), 최악의 수행 시간 복잡도는 O(n2) Process (Ascending) 배열 가운데서 하나의 원소를 고름 이렇게 고른 원소를 피벗(pivot) 이라고 함 피벗 앞에는 피벗보다 값이 작은 모든 원소들이 오고, 피벗 뒤에는 피벗보다 값이 큰 모든 원소들이 오도록 피벗을 기준으로 배열을 둘로 나눔 이렇게 배열을 둘로 나누는 것을 분할(Divide) 이라고 함. 분할을 마친 뒤에 피벗은 더 이상 움직이지 않음 분할된 두 개의 작은 배열에 대해 재귀(Recursion)적으로 이 과정을 반복 재귀 호출이 한번 진행될 때..
[알고리즘]힙 정렬(Heap Sort)
·
CS 지식/[알고리즘]
완전 이진 트리란? 삽입할 때 왼쪽부터 차례대로 추가하는 이진 트리 힙 정렬 완전이진 트리를 이용한 정렬 방식 평균과 최악 모두 시간 복잡도는 O(nlog2n) 과정 최대 힙을 구성 현재 힙 루트는 가장 큰 값이 존재함. 루트의 값을 마지막 요소와 바꾼 후, 힙의 사이즈 하나 줄임 힙의 사이즈가 1보다 크면 위 과정 반복 루트를 마지막 노드로 대체 (11 → 4), 다시 최대 힙 구성 이와 같은 방식으로 최대 값을 하나씩 뽑아내면서 정렬하는 것이 힙 소트 public void heapSort(int[] array) { int n = array.length; // max heap 초기화 for (int i = n/2-1; i>=0; i--){ heapify(array, n, i); // 1 } // ext..
[알고리즘] 삽입 정렬(Insertion Sort)
·
CS 지식/[알고리즘]
삽입 정렬 2번째 원소부터 시작하여 그 앞(왼쪽)의 원소들과 비교하여 삽입할 위치를 지정한 후, 원소를 뒤로 옮기고 지정된 자리에 자료를 삽입 하여 정렬하는 알고리즘 순서에 맞게 삽입 시키는 정렬 평균과 최악 모두 수행 시간 복잡도는 O(n2) Process (Ascending) 정렬은 2번째 위치(index)의 값을 temp에 저장 temp와 이전에 있는 원소들과 비교하며 삽입 '1'번으로 돌아가 다음 위치(index)의 값을 temp에 저장하고, 반복 void insertionSort(int[] arr) { for(int index = 1 ; index < arr.length ; index++){ // 1. int temp = arr[index]; int prev = index - 1; while( ..
[데이터베이스] 데이터베이스 무결성
·
CS 지식/[데이터베이스]
무결성 보장 방법 데이터를 조작하는 프로그램 내에서 데이터 생성, 수정, 삭제 시 무결성 조건을 검증 데이터베이스 무결성 테이블에 있는 모든 행들이 유일한 식별자를 가질 것을 요구함(같은 값 X) 외래키 값은 NULL이거나 참조 테이블의 PK 값이어야 함 한 컬럼에 대해 NULL 허용 여부와 자료형, 규칙으로 타당한 데이터 값 지정
[데이터베이스] DBMS
·
CS 지식/[데이터베이스]
DBMS(데이터베이스 관리 시스템) 다수의 사용자가 데이터베이스 내의 데이터를 접근할 수 있도록 설계된 시스템 DBMS의 기능 1) 정의 기능(DDL : Data Definition Language) 데이터베이스가 어떤 용도이며 어떤 식으로 이용될 것이라는 것에 대한 정의가 필요함 CREATE, ALTER, DROP, RENAME 2) 조작 기능(DML : Data Manipulation Language) 데이터베이스를 만들었을 때 그 정보를 수정하거나 삭제 추가 검색 할 수 있어야 함 SELECT, INSERT, UPDATE, DELETE 3) 제어 기능(DCL : Data Control Language) 데이터베이스에 접근하고 객체들을 사용하도록 권한을 주고 회수하는 명령 GRANT REVOKE
[데이터베이스] 트랜잭션(Transaction)
·
CS 지식/[데이터베이스]
트랜잭션 데이터베이스의 상태를 변화시키기 위해 수행하는 작업 단위 상태를 변화시킨다는 것 → SQL 질의어를 통해 DB에 접근하는 것 - SELECT - INSERT - DELETE - UPDATE 작업 단위 → 많은 SQL 명령문들을 사람이 정하는 기준에 따라 정하는 것 예시) 사용자 A가 사용자 B에게 만원을 송금한다. * 이때 DB 작업 - 1. 사용자 A의 계좌에서 만원을 차감한다 : UPDATE 문을 사용해 사용자 A의 잔고를 변경 - 2. 사용자 B의 계좌에 만원을 추가한다 : UPDATE 문을 사용해 사용자 B의 잔고를 변경 현재 작업 단위 : 출금 UPDATE문 + 입금 UPDATE문 → 이를 통틀어 하나의 트랜잭션이라고 한다. - 위 두 쿼리문 모두 성공적으로 완료되어야만 "하나의 작업(..