전체 글83 [C언어 알고리즘] 정렬 (8) - 병합정렬 (Merge Sort) 병합정렬은 이미 정렬된 두 파일을 병합(Merge)하는 방식을 일반화한 것입니다. 병합정렬은 아주 자연스럽고 이해가 쉽고 빠른 속도를 가지는 정렬방식입니다. 병합정렬은 두 자료를 순차적으로 읽어가면서 비교 접근하는 방법으로 연결리스트(Linked-list), 테이프(Tape)같은 순차적 접근만이 용이한 자료구조나 기억장치에서 유용하고 유일한 정렬방법입니다. 병합정렬은 메모리내부(internal)정렬뿐 아니라 외부(external) 정렬에서도 사용합니다. 이번 포스팅에서는 하나의 배열을 최소 단위 (배열의 1개요소)부터 단위를 2배로 늘려가며 정렬하는 예제에 대해 공부합니다. 우선 병합정렬의 기본 의사코드(Pseudo code)를 보도록 하죠. 1. size = 1 2. size가 N보다 작을 동안 2.1.. 2020. 7. 21. C언어 공부하기 - 연산자 연산자란 C언어 수식 또는 문장에서 어떤 기능을 수행하는 기호를 의미합니다. 수학 연산에서 배우는 기호와 많이 유사하죠. 예를 들어 다음과 같은 C언어 문장이 있다고 합시다. int age = 10; age = age + 10; 첫 문장은 정수형 변수 age를 선언하고 그 변수에 10을 대입하라는 의미입니다. 여기서 '='기호는 오른쪽 값을 왼쪽에 대입(또는 지정Assignment)하라는 대입연산자입니다. age와 10은 피연산자입니다. 두 번째 문장은 위에서 선언한 age(10이란 값이 들어 있죠.)에 10를 더해 다시 age에 넣으라는 의미입니다. '+'기호는 더하라는 의미의 산술(Arithmetic)연산자이고 '='기호는 마찬가지로 대입연산자입니다. 1. 산술연산자 산술연산자는 두개의 피연산자를 갖.. 2020. 7. 20. C언어 공부하기 - 변수와 상수 변수와 상수는 프로그램에서 사용되는 기본적인 데이터입니다. 변수와 상수를 사용하기 위해서는 사용할 변수를 형식에 맞게 선언을 하고 값을 지정해 줄 필요도 있습니다. 변수와 상수는 데이터형(Data type)에 따라 사용할 수 있는 값과 그들을 다룰 연산이 결정됩니다. 이번 포스팅에서는 기본 데이터형과 변수 및 상수의 개념과 사용 예제를 다루겠습니다. 1. 변수 (Variable) 변수는 데이터형에 맞는 값이 변경이 가능한 메모리 공간입니다. 예를 들어 나이라는 데이터를 아래와 같이 선언하고 초기값을 지정했다고 합시다. int age = 10; 위의 문장에서는 나이를 의미하는 age라는 변수명을 int형이라는 데이터형으로 선언하고 값을 10으로 지정했다는 의미입니다. '='기호는 수학에서는 등호로 같다라는.. 2020. 7. 18. C언어 공부하기 - 시작하기 1. 시작 새로운 언어를 가장 빨리 배우는 법은 그 언어로 프로그램을 짜보는 것입니다. 처음에는 에러도 실수도 많겠지만 고쳐가는 과정에서 실력은 눈에 띄게 늘게 될 것임을 확신합니다. 모든 프로그래밍 언어에서 시작은 항상 다음과 같은 문자를 화면에 출력하는 프로그램을 짜는 것으로 시작합니다. hello, world! 이 프로그램을 C언어로 작성하는 것은 매우 간단합니다. 파일 이름을 hello.c라고 저장합니다. #include void main() { printf("hello, world!\n); } 2. 프로그램 분석 매우 짧은 프로그램이지만, 살짝 분석을 해보겠습니다. #include #include는 다음에 나오는 사이의 파일을 포함시키겠다는 매크로 입니다. 여기서는 stdio.h라는 파일을 포함.. 2020. 7. 16. [C언어 알고리즘] 정렬(7) - 기수정렬 (Radix sort) Radix란 수학에서 밑(Base)를 의미하는 진법 체계에서 기준이 되는 수를 의미합니다. 예를 들어 자연수 1234가 있다면 $$ 1234 = 1 \times 10^3 + 2 \times 10^2 + 3 \times 10^1 + 4 \times 10^0 $$ 으로 표현이 가능합니다. 어떤 진법을 사용해도 상관은 없지만 컴퓨터가 처리하기 좋은 이진법을 사용하여 설명을 드리겠습니다. 초기 데이터가 아래와 같을 때, l e a r n a l g o r i t h m 아래 그림은 문자를 세로로 정렬하여 이진수로 표기하여 맨 앞열은 문자를 세로로 배열한 내용이고, 7~0은 각 비트에 해당하는 이진수를 의미합니다. 최상위 비트(7bit)에서 최하위 비트(0 bit)까지 배열의 맨 앞문자('l')부터 비트 '1'인.. 2020. 7. 14. C언어 공부하기 - 개요 1. C 언어의 탄생 C언어는 1972년 벨 연구소(Bell Labs)의 켄 톰슨(Kenneth Lane Thompson)과 데니스 리치(Dennis Ritchie)가 새로 개발된 유닉스 시스템에 사용하기 위해 개발한 프로그래밍 언어입니다. 켄 톰슨은 BCPL언어를 필요에 맞춰 개조해서 'B'라는 언어를 개발했고, 데니스 리치는 이를 개선하여 'C'언어를 만들었습니다. (B다음이 C니까 그렇게 지었다고 합니다.) 2. C언어의 역사 2.1. K&R C (1978년) 1978년 브라이언 커니핸(Brian Wilson kernighan)과 데니스 리치가 그 유명한 The C Programming Language 책의 초판을 출간 했습니다. 저자의 앞자를 따서 K&R C 라 불리는 이 책은 C프로그래머들에게 .. 2020. 7. 14. 이전 1 ··· 7 8 9 10 11 12 13 14 다음