728x90
반응형

개발/C 8

[C언어] 정렬 알고리즘(분할 정복 알고리즘) - 병합정렬(Merge Sort), 퀵 정렬(Quick Sort)

1. 병합 정렬(Merge Sort)분할 정복 전략을 사용하여 배열을 반으로 나누고, 각각을 정렬한 후 병합하는 방식.안정 정렬: 동일한 값의 상대적 순서를 유지시간 복잡도: O(N log N)공간 복잡도: O(N)동작 과정배열을 전반으로 나눔나눈 하위 배열을 각각 재귀적으로 정렬두개의 정렬된 배열을 병합하여 하나의 정렬된 배열을 만듬예시 코드#include void merge(int arr[], int left, int mid, int right) { int n1 = mid - left + 1; int n2 = right - mid; int L[n1], R[n2]; for (int i = 0; i 2. 퀵 정렬(Quick Sort)배열에서 하나의 피벗(Pivot)을 선택한 후, 피..

개발/C 2025.01.24

[C언어] 정렬 알고리즘 - 버블정렬, 선택정렬, 삽입정렬

1. 버블 정렬(Bubble Sort)인접한 두 요소를 비교하여 크기가 순서에 맞지 않으면 서로 교환큰값이나 작은값이 반복적으로 앞으로 혹은 뒤로 이동하는 방식으로 동작시간 복잡도: O(N) ~ O(N^2)동작 과정배열의 첫 번째 요소부터 인접한 두 요소를 비교조건에 따라 교환하며 배열 끝까지 진행한번 순회가 끝나면 가장 큰 값이 배열 끝에 위치함이 과정을 배열 크기만큼 반복예시 코드#include void bubbleSort(int arr[], int n) { for (int i = 0; i arr[j + 1]) { // 오름차순 정렬 int temp = arr[j]; arr[j] = arr[j + 1]; arr[j..

개발/C 2025.01.23

[C언어] 기초 자료구조 - 해시(Hash)

1. 해시(Hash)란?해시는 키(Key)를 기반으로 데이터를 저장하고 검색하는 데 사용되는 자료구조. 해싱(Hashing)기법을 통해 키를 해시 함수(Hash Function)로 처리하여 고유한 해시 값(Hash Value)을 생성.특징데이터의 삽입, 삭제, 검색을 O(1) 시간 복잡도로 처리동일한 해시 값이 발생할 경우 충돌(Collision)이 발생할 수 있음활용 사례데이터베이스 인덱싱캐싱암호화 알고리즘집합(Set)과 맵(Map) 구현2. 해시 테이블(Hash Table)의 구조키(Key): 고유한 값(문자열, 정수 등).해시 함수(Hash Function)키를 일정 범위의 정수로 변환.예: hash(key) = key % table_size해시 테이블배열 기반 자료구조로, 해시 값을 인덱스로 사용..

개발/C 2025.01.22

[C언어] 기초 자료구조 - 힙(Heap)

1. 힙(Heap)이란?힙은 이진 트리 기반의 자료구조로, 최대 힙(Max Heap) 또는 최소 힙(Min Heap)으로 구현됨.최대 힙(Max Heap): 부모 노드가 자식 노드보다 크거나 같음.최소 힙(Min Heap): 부모 노드가 자식 노드보다 작거나 같음.특징완전 이진 트리 형태로 구현.배열로 저장하면 메모리를 효율적으로 사용할 수 있음.배열 기반 힙 구현 시부모와 자식 노드의 관계부모: arr[i]왼쪽 자식: arr[2*i + 1]오른쪽 자식: arr[2*i + 2]자식에서 부모 찾기부모: arr[(i-1)/2]활용 사례우선순위 큐.힙 정렬최단 경로 알고리즘(다익스트라).2. 힙을 사용한 우선순위 큐의 동작주요 연산삽입(Insert)데이터를 힙의 마지막 위치에 삽입.부모 노드와 비교하여 힙 속..

개발/C 2025.01.21

[C언어] 기초 자료구조 - 큐(Queue)

1. 큐(Queue)란?큐는 선입선출(FIFO, First In First Out) 방식으로 동작하는 자료구조.특징데이터는 한쪽(뒤, rear)에서 삽입되고, 다른쪽(앞, Front)에서 제거됩니다.활용 사례프로세스 스케줄링데이터 스트림 처리BFS(너비 우선 탐색)구현큐의 동작 원리, 주요 연산Enqueue: 데이터를 큐의 뒤에 삽입.Dequeue: 데이터를 큐의 앞에서 제거.Peek(Front): 큐의 가장 앞 요소를 반환하지만 제거하지 않음.IsEmpty: 큐가 비어 있는지 확인.IsFull: 큐가 가득 찼는지 확인(배열 기반 큐에서)2. 배열 기반 큐 구현큐를 비열로 구현하면 고정된 크기의 정적 큐를 만들 수 있음.#include #define MAX 5 // 큐의 최대 크기int queue[MAX..

개발/C 2025.01.21

[C언어] 기초 자료구조 - 스택(Stack)

1. 스택(Stack)이란?스택은 후입선출(LIFO, Last In First Out) 방식으로 동작하는 자료구조입니다.특징데이터가 맨 위(top)에서만 삽입(push)되고 삭제(pop)됨.제한된 접근 방식으로 특정 위치의 데이터를 바로 접근할 수 없음.활용 사례함수 호출(재귀 호출 관리)괄호 짝 검사되돌리기(Undo) 기능동작 원리Push: 데이터를 스택의 맨 위에 추가.Pop: 데이터를 스택의 맨 위에서 제거.Peek(Top): 스택의 맨 위 요소를 반환하지만 제거하지 않음.IsEmpty: 스택이 비어 있는지 확인.2. 배열 기반 스택 구현스택을 배열로 구현 시 고정된 크기의 정적 스택을 만들 수 있음.#include #define MAX 5 // 스택의 최대 크기int stack[MAX];int t..

개발/C 2025.01.21

[C언어] 기초 자료구조 - 문자열

1. 문자열이란?문자열은 문자(char)들의 연속으로 이루어진 데이터. C언어에서는 문자열을 널문자('\0')로 끝나는 문자 배열로 표현.특징문자열은 char 배열로 저장됨.문자열 끝에는 항상 '\0'이 추가됨.문자열 처리에는 라이브러리를 사용.예시 코드#include int main() { char str[] = "Hello, World!"; printf("%s\n", str); // 문자열 출력 return 0;}2. 문자열 선언 및 초기화문자열 선언 방법char str[20] = "Hello";초기화 시 주의점배열 크기를 지정하면 남은 공간은 자동으로 '\0'으로 채워짐.배열 선언 시 크기보다 긴 문자열은 저장할 수 없음.예시 코드#include int main() { cha..

개발/C 2025.01.21

[C언어] 기초 자료구조 - 배열 (Array)

1. 배열이란?배열은 동일한 데이터 타입의 값을 연속된 메모리 공간에 저장하는 자료 구조 입니다.특징인덱스를 사용하여 각 요소에 접근메모리 공간이 연속적으로 할당됨선언 시 크기를 고정해야 함예시 코드#include int main() { int arr[5] = {10, 20, 30, 40, 50}; printf("첫 번째 요소: %d\n", arr[0]); // 10 출력 return 0;}2. 배열 선언 및 초기화배열의 선언데이터형 배열이름[크기];배열 초기화명시적 초기화자동 초기화#include int main() { int arr1[5] = {1, 2, 3}; // 나머지 요소는 0으로 초기화됨 int arr2[] = {4, 5, 6}; // 크기 생략 가능 pri..

개발/C 2025.01.21
728x90
반응형