목록CS (13)
HS_development_log
병합 정렬(Merge Sort) 병합 정렬 이란? 합병 정렬이라고도 부르며, 분할 정복 방법을 통해 구현 안정 정렬 이다 Process 원소 개수가 1 또는 0 이 될 때 까지 두 부분으로 쪼갠다 쪼갠 순서의 역순으로 크기를 비교해 병합해 나간다 Java Code import java.util.*; public class Main { public static void main(String[] args) { int[] arr = {43, 51, 76, 60, 73, 82, 36, 98,10,23,1,100}; mergeSort(arr, 0, arr.length-1); System.out.println(Arrays.toString(arr)); } public static void mergeSort(int[]..
퀵 정렬(Quick Sort) 퀵 정렬 이란? 퀵 정렬은 분할 정복(divide and conquer) 방법을 통해 주어진 배열을 정렬한다 불안정 정렬 이다 다른 원소와의 비교만으로 정렬을 수행하는 비교 정렬이다 Process 배열 가운데서 하나의 원소를 고른다. 이렇게 고른 원소를 피벗(pivot)이라고 한다 피벗을 고르는 방법은 여러가지가 있지만,이 글에서는 맨 오른쪽 원소를 피벗으로 잡는다 피벗을 어떻게 고르느냐에 따라 속도 차이가 많이 난다 피벗보다 작은 원소는 모두 왼쪽, 큰 원소는 모두 오른쪽으로 오게하고, 배열을 분할한다 분할을 마친 뒤에 피벗은 더 이상 움직이지 않는다 분할된 두 개의 작은 배열에 대해 재귀(Recursion)적으로 이 과정을 반복한다 재귀 호출이 한번 진행될 때마다 최소한..
주소 바인딩(Address Binding) 과 주소 변환(Address Translation) 배경지식 기억장치(DRAM) : 주소를 가지는 워드 (또는 바이트)들로 구성 프로그램이 실행되기 위해서는 기억장치에 적재되어야 한다 적재된 프로그램 : 프로세스(Process) 프로세스의 일반적인 실행과정 프로그램 계수기에서 가리키고 있는 주소에서 명령어를 CPU로 가져옴(fetch) 명령어를 해독(decode) 기억장치에서 피연산자를 CPU로 가져와서 피연산자에 대해 명령어를 실행(execute) 실행한 결과를 기억장치에 다시 저장(store) 주소 바인딩(Address Binding) 프로그램의 명령어와 데이터를 기억장치에 적재할 때, 그것들의 기억장치 주소를 결정하는 것 프로그램에서 사용하는 심볼(전역변수..
교착상태(Deadlock) 교착상태(Deadlock) 여러 프로세스 들이 각자 자원을 점유하고 있으면서 다른 프로세스가 점유하고 있는 자원을 요청하면서 무한하게 대기하는 상태 시스템 자원 : CPU, 기억장치, I/O장치 ,파일, 세마포어 등 프로세스가 자원을 사용하려면 다음 순서로 수행한다 요청(request) : 요청이 즉시 허용되지 않는 경우, 자원을 얻을때까지 대기한다 사용(use) 해제(release) or 반환 교착상태 조건 상호배제(Mutual exclusion) 한 번에 오직 한 프로세스만이 자원을 사용할 수 있다 점유와 대기(Hold and wait) 프로세스가 적어도 하나의 자원을 점유하면서 다른 프로세스가 점유하고 있는 자원을 추가로 얻기 위해 대기한다 비선점(No preemption..