728x90
반응형

정렬알고리즘 9

기수 정렬(Radix Sort) 알고리즘

개요기수 정렬(Radix Sort)은 정수형 데이터를 자릿수별로 분류하여 정렬하는 방식의 비교 기반이 아닌(non-comparative) 정렬 알고리즘이다. LSD(Least Significant Digit) 방식에서는 가장 낮은 자리부터 정렬하고, MSD(Most Significant Digit)는 가장 높은 자리부터 정렬한다. **시간 복잡도는 O(nk)**로 매우 효율적이며, 계수 정렬 또는 안정 정렬을 내부적으로 활용한다.1. 개념 및 정의기수 정렬은 숫자의 각 자릿수를 기준으로 여러 번의 정렬을 반복하여 전체 배열을 정렬하는 알고리즘이다. 각 자릿수마다 안정 정렬을 수행해야 정확한 결과를 보장할 수 있다.예를 들어 [170, 45, 75, 90, 802, 24, 2, 66]를 정렬할 경우:1의 ..

Topic 2025.03.29

계수 정렬(Counting Sort) 알고리즘

개요계수 정렬(Counting Sort)은 정수 데이터가 주어진 범위 내에 존재할 때, 매우 빠르게 정렬할 수 있는 비교 기반이 아닌 정렬 알고리즘이다. 데이터의 빈도수를 카운트 배열에 저장하고, 이를 기반으로 정렬된 결과를 생성하는 방식으로, 평균 시간 복잡도 **O(n + k)**의 매우 빠른 성능을 제공한다. 단, 정수 범위가 제한적일 때만 효율적이다.1. 개념 및 정의계수 정렬은 다음 절차로 이루어진다:입력 배열에서 최댓값(K)을 기준으로 길이 K+1짜리 카운트 배열 생성각 원소의 빈도수를 카운트 배열에 저장카운트 배열을 누적합으로 변경 (누적합 정렬 시 사용)누적합을 기반으로 정렬된 결과 배열에 삽입음수 데이터에는 직접 사용할 수 없고, 변환이 필요하다.2. 동작 원리 단계 설명 1입력 배열에..

Topic 2025.03.29

힙 정렬(Heap Sort) 알고리즘

개요힙 정렬(Heap Sort)은 힙(Heap) 자료구조를 기반으로 하는 비교 기반 정렬 알고리즘이다. 최대 힙(Max Heap) 또는 최소 힙(Min Heap)을 이용해 최댓값(또는 최솟값)을 반복적으로 추출하고, 이를 배열의 끝에 삽입하는 방식으로 동작한다. **시간 복잡도가 항상 O(n log n)**으로 일정하며, **제자리 정렬(in-place)**이 가능하다는 장점이 있다.1. 개념 및 정의힙 정렬은 다음 두 단계로 이루어진다:배열을 힙 구조(완전 이진 트리)로 구성 (heapify)루트 노드(최댓값 또는 최솟값)를 추출한 뒤, 남은 요소로 힙 재구성 → 정렬 반복일반적으로 최대 힙을 사용해 오름차순 정렬을 수행한다.2. 동작 원리 단계 설명 1단계입력 배열을 최대 힙 구조로 변환2단계힙의 ..

Topic 2025.03.29

퀵 정렬(Quick Sort) 알고리즘

개요퀵 정렬(Quick Sort)은 평균적으로 매우 빠른 성능을 자랑하는 비교 기반 정렬 알고리즘으로, 분할 정복(Divide and Conquer) 전략을 사용한다. 주어진 배열에서 기준이 되는 **피벗(Pivot)**을 기준으로 좌우로 나누고, 이를 재귀적으로 정렬해 전체 배열을 정렬하는 방식이다. 내부 정렬 중 가장 널리 사용되며, 실무에서도 많이 활용되는 알고리즘이다.1. 개념 및 정의퀵 정렬은 다음과 같은 방식으로 작동한다:피벗(pivot)을 하나 선택한다피벗보다 작은 값은 왼쪽, 큰 값은 오른쪽으로 분할각 파티션(partition)에 대해 재귀적으로 퀵 정렬 수행병합은 따로 필요 없음 (자리 교환으로 해결)2. 동작 원리 단계 설명 1피벗을 선택한다 (보통 처음, 마지막, 중간 또는 랜덤)2..

Topic 2025.03.29

병합 정렬(Merge Sort) 알고리즘

개요병합 정렬(Merge Sort)은 데이터를 반으로 나누고 각각을 정렬한 뒤 다시 병합하는 분할 정복(Divide and Conquer) 전략을 사용하는 효율적인 정렬 알고리즘이다. 안정 정렬이며, 항상 **O(n log n)**의 시간 복잡도를 유지해 정렬 알고리즘 중에서도 높은 성능과 예측 가능성을 보인다. 내부 정렬과 외부 정렬(External Sort) 모두에 활용되며, 대용량 데이터 정렬에도 적합하다.1. 개념 및 정의병합 정렬은 다음 과정을 반복하여 배열을 정렬한다:배열을 반으로 나눈다 (재귀적으로)각각을 병합 정렬로 정렬한다정렬된 두 부분 배열을 하나로 병합한다병합 시에는 두 정렬된 배열을 비교하여 하나의 정렬된 배열로 합친다.2. 동작 원리단계설명1배열을 재귀적으로 반씩 나눔2분할된 배열..

Topic 2025.03.29

삽입 정렬(Insertion Sort) 알고리즘

개요삽입 정렬(Insertion Sort)은 정렬되지 않은 데이터를 하나씩 꺼내어 정렬된 부분에 삽입해가는 방식으로 작동하는 비교 기반 정렬 알고리즘이다. 카드 정렬 방식과 유사하며, 구현이 간단하고 작은 데이터 집합에서 매우 효과적이다. 또한 대부분의 경우에 안정 정렬로 분류되며, 부분 정렬이 되어 있는 경우 효율적이다.1. 개념 및 정의삽입 정렬은 다음과 같이 동작한다:두 번째 원소부터 시작해 이전 원소들과 비교정렬된 부분 중 적절한 위치를 찾아 값을 삽입이 과정을 배열 끝까지 반복이미 정렬된 데이터에는 최소 연산만 수행되어 최적의 성능을 발휘한다.2. 동작 원리 단계 설명 1단계두 번째 원소부터 시작하여 이전 원소들과 비교2단계더 큰 값을 뒤로 이동시키며 빈 자리를 만들고 삽입3단계삽입 후 정렬된..

Topic 2025.03.29

선택 정렬(Selection Sort) 알고리즘

개요선택 정렬(Selection Sort)은 정렬되지 않은 부분에서 가장 작은(또는 큰) 값을 선택해 맨 앞의 값과 교환하는 방식으로 정렬을 수행하는 알고리즘이다. 반복적으로 최솟값을 선택하고 정렬된 영역 뒤에 배치하면서 전체 배열을 정렬해나간다. 구현이 간단해 정렬 알고리즘 입문용으로 적합하며, 메모리 사용이 적은 것이 특징이다.1. 개념 및 정의선택 정렬은 다음과 같은 방식으로 동작한다:전체 배열에서 가장 작은 값을 찾아 첫 번째 위치와 교환두 번째부터 끝까지 반복하여 두 번째로 작은 값을 두 번째 위치로 이동이런 식으로 n-1번 반복해 정렬 완료2. 동작 원리 단계 설명 1단계i번째 인덱스를 기준으로 최솟값을 찾음2단계최솟값과 i번째 값을 교환(swap)3단계i를 1 증가시키고 배열 끝까지 반복배..

Topic 2025.03.29

버블 정렬(Bubble Sort) 알고리즘

개요버블 정렬(Bubble Sort)은 가장 간단하고 직관적인 정렬 알고리즘 중 하나로, 인접한 두 원소를 비교하여 큰 값을 뒤로 보내는 방식으로 동작한다. 반복적으로 배열을 순회하며 작은 값을 앞쪽으로, 큰 값을 뒤쪽으로 '버블처럼' 이동시키는 방식에서 그 이름이 유래되었다. 구현이 쉬워 교육용으로 자주 사용되며, 소규모 데이터나 정렬이 거의 완료된 배열에 적합하다.1. 개념 및 정의버블 정렬은 인접한 두 값을 반복 비교하고, 순서가 잘못된 경우 교환(swap)하여 정렬하는 방식이다. 전체 배열을 여러 번 순회하면서 가장 큰 값을 맨 끝으로 보내고, 점점 정렬 범위를 줄여나간다.2. 동작 원리 단계 설명 1첫 번째 요소부터 인접한 두 값을 비교2큰 값을 오른쪽으로 교환3배열 끝까지 반복 후, 가장 큰..

Topic 2025.03.28

정렬 알고리즘(Sorting Algorithms)

개요정렬 알고리즘은 데이터 집합을 일정한 기준(숫자 크기, 알파벳 순 등)에 따라 순서대로 정렬하는 알고리즘이다. 효율적인 정렬은 데이터 검색, 최적화, 통계 처리 등에서 성능 향상에 큰 영향을 미친다. 정렬 방식에 따라 내부 정렬, 외부 정렬, 안정 정렬, 불안정 정렬로 나뉘며, 시간/공간 복잡도에 따라 선택이 달라진다. 본 글에서는 대표적인 정렬 알고리즘들의 개념, 성능, 특징 및 활용 사례를 중심으로 정리한다.1. 정렬 알고리즘의 분류 분류 기준 유형 설명 구현 방식비교 기반 정렬요소 간 비교를 통해 순서 결정 (버블, 삽입, 병합 등)비비교 기반 정렬키 값을 직접 계산해 정렬 (계수, 기수 정렬)메모리 사용내부 정렬주 메모리 내에서 정렬 수행 (일반적인 정렬)외부 정렬디스크 등 외부 저장소에서..

Topic 2025.03.28
728x90
반응형