밍키의 마법세상
bubble sort는 6 5 4 3 2 1 5 6 4 3 2 1 5 4 6 3 2 1 5 4 3 6 2 1 5 4 3 2 1 6 위처럼 한번 시행에서 배열 안의 최대값은 배열의 맨 뒤에 위치하게 된다. 그러므로 다음 시행에서는 n-1번까지만 정렬을 해주면 된다. 항상 n^2만큼의 시간복잡도를 갖게 된다. - C 구현 코드 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 #include void swap(int *n1, int *n2); void bubble_sort(int list[]); int main(){ int list[10]; for(int i = 0; i
컨테이너 격리된 공간에서 프로세스가 동작하는 기술이다. VMware와 VirtualBox같은 기존의 가상머신은 호스트 OS위에 게스트 OS 전체를 가상화하여 사용하는 방식으로서 간단하지만 무겁고 느린 단점이 존재한다. 이런 단점을 개선하기 위해 프로세스를 격리시키는 방식이 등장하는데 이 방식이 리눅스 컨테이너이다. 가볍고 빠르며 컨테이너들은 서로 영향을 미치지 않기 때문에 보안에 유의하다. 도커 컨테이너 기반의 오픈소스 가상화 플랫폼이다. 즉 컨테이너를 관리하는 플랫폼이다. 다양한 프로그램, 실행환경등을 추상화하고 동일한 인터페이스를 제공하여 프로그램의 배포 및 관리를 용이하게 해준다. 이미지 컨테이너 실행에 필요한 파일과 설정값등을 포함하고 있는 것이다. 상태값을 갖지 않고 변하지 않으며 컨테이너는 이..
객체지향 프로그래밍이란?-> 프로그래밍에서 필요한 데이터를 추상화시켜 상태와 행위를 가진 객체를 만들고 그 객체들 간에 유기적인 상호작용을 통해 로직을 구성하는 프로그래밍 방법. 장점은?-> 코드 재사용에 편리 : 상속을 통해 확장하여 사용 가능-> 유지보수의 편의 : 수정할 부분이 클래스 내부의 맴버변수나 메소드이므로 수정이 편리함-> 대형 프로젝트에 적합 : 클래스단위로 개발가능하므로 업무분담이 편리함 단점은?-> 처리속도가 상대적으로 느림-> 객체가 많으면 용량이 커짐-> 설계의 복잡성 클래스란? -> 어떤 문제를 해결하기 위한 데이터를 만들기 위해 추상화를 거쳐 집단에 속하는 속성과 행위를 변수와 메소드로 정의한 것 객체란? -> 클래스에서 정의한 것을 토대로 실제 메모리상에 할당된 것으로 실제 ..
1. 개념 설명 컴퓨터의 성능 발달로 인해, 운영체제는 다중 프로그래밍 환경을 제공해 준다. 다양한 프로그램들이 메모리에 적재와 종료를 반복하면서 메모리 공간은 규칙적이지 않은 빈 공간이 계속 발생할 것이다. 이때 여러 빈 공간중 프로세스를 어느 곳에 할당해 줄지 정하는 알고리즘이 바로 메모리 할당 알고리즘 이다. 2. 종류 1) 최초 적합 (First-fit) : 메모리를 처음부터 검사하며 가장 첫번째로 사용가능한 공간에 할당해준다. 장점 - 빠른 메모리 할당 가능 단점 - 공간 활용률이 떨어짐 2) 최적 적합 (Best-fit) : 메모리 공간 중 프로세스가 들어갈 수 있는 가장 작은 공간에 할당해준다. 장점 - 공간 활용률이 높아짐 단점 - 사용 가능한 메모리가 크기 순으로 정렬되있지 않으면 메모리..
보호되어 있는 글입니다.
1. *와 & 연산자의 역할 -코드 #include int main(){ int a = 4; int *p = &a; *p = 3; printf("a = %d\n",a); printf("*p = %d\n",*p); return 0; } -실행결과 * 연산자 : 저장된 주소가 가리키는 값, 포인터를 생성할떄 사용되는 연산자 & 연산자: 해당 변수의 주소 2. 이중 포인터란? -코드 #include int main(){ int a = 1; int *p; int **pp; p = &a; pp = &p; printf("p가 가리키는 값 : %d\n", *p); printf("p에 저장된 값 : %p\n", p); printf("pp가 가리키는 값 : %d\n", **pp); printf("pp에 저장된 값 : %..