728x90
반응형

알고리즘 4

[C언어] 자료구조: 이진 트리 - 노드 생성, 삭제, 탐색

프로그래밍 언어 중에서도 고전적인 매력을 지닌 C언어는 시스템 프로그래밍이나 임베디드 시스템 개발에서 자주 사용됩니다. 특히 자료구조를 이해하고 구현하는 데 있어 C언어는 필수적인 도구이며, 그중 트리(Tree)는 매우 중요한 자료구조 중 하나입니다. 이 글에서는 C언어로 트리를 구현하는 방법부터 시작해서, 다양한 트리 종류와 옵션들을 자세히 설명하고자 합니다.트리는 계층적 구조를 가진 자료구조로, 루트 노드에서 시작하여 여러 개의 자식 노드를 가질 수 있는 구조입니다. 파일 시스템이나 조직도, 계층적 데이터를 다룰 때 주로 사용되며, 이진 탐색 트리, 힙, AVL 트리, B-트리 등 다양한 변형이 존재합니다. C언어로 트리를 구현하려면 포인터 개념을 잘 이해하고 있어야 하며, 노드 구조체 정의부터 삽입..

개발/C 2025.05.14

[Python] 파이썬: 링크드리스트(Linked List) - 단일 연결 리스트(Singly Linked List), 이중 연결 리스트(Doubly Linked List), 원형 연결 리스트(Circular Linked List)

파이썬에서 링크드 리스트(Linked List)는 데이터 구조 중 하나로, 배열과는 달리 요소들이 메모리상에 연속적으로 저장되지 않고, 각 요소가 다음 요소에 대한 참조(포인터)를 가지고 있는 구조입니다. 파이썬 자체에서는 내장 자료형으로 링크드 리스트를 제공하지 않지만, 클래스를 활용하여 직접 구현할 수 있습니다. 이 글에서는 단일 연결 리스트(Singly Linked List), 이중 연결 리스트(Doubly Linked List), 원형 연결 리스트(Circular Linked List) 등 다양한 형태의 링크드 리스트에 대해 설명하고, 각 구조의 특징과 사용법, 구현 방법, 옵션 등을 자세히 다루겠습니다.단일 연결 리스트(Singly Linked List)역할단일 연결 리스트는 각 노드가 데이터와..

개발/Python 2025.05.12

[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
728x90
반응형