정렬 알고리즘 총 정리 및 비교 - 각 알고리즘 별 장단점, 시간 복잡도, 공간 복잡도, 안정성, 주요 특징, 상황에 따른 선택 기준
정렬 알고리즘은 데이터를 특정 순서(오름차순, 내림차순)로 배치하는 데 사용됩니다. 코딩테스트에서 데이터를 정렬하는 문제는 매우 자주 나옵니다. 그래서 문제를 잘 분석하고, 데이터 크기와 특성에 따라 적절한 알고리즘을 선택하는 것이 중요합니다. 이 포스팅에서는 앞서 다룬 정렬 알고리즘들을 비교하고, 상황에 맞게 언제 어떤 알고리즘을 사용하는 것이 좋은지 알아보겠습니다. 1. 정렬 알고리즘 개념 정리아래 링크들에 코딩 테스트에서 사용할만한 거의 모든 정렬 알고리즘들에 대해 매우 자세히 정리했습니다. 꼭 보시기를 추천드립니다.2024.12.31 - [알고리즘] - 버블 정렬 (Bubble Sort) 총 정리 - 개념, 원리, 동작 예시, 시간 복잡도, C언어, Java, Python 예시코드, 주의점, 장..
2025. 1. 3.
쉘 정렬(Shell Sort) 총 정리 - 개념, 원리, 동작 예시, 시간 복잡도, C언어, Java, Python 예시코드, 주의점, 장단점
0. [사전 지식] 삽입 정렬쉘 정렬은 삽입 정렬을 개선한 정렬 알고리즘입니다. 삽입 정렬에 대해 먼저 살펴보시기를 추천드립니다. 삽입 정렬에 대해서는 아래 링크에 자세히 정리했습니다.2024.12.31 - [알고리즘] - 삽입 정렬(Insertion Sort) 총 정리 - 개념, 원리, 동작 예시, 시간 복잡도, C언어, Java, Python 예시코드, 주의점, 장단점 삽입 정렬(Insertion Sort) 총 정리 - 개념, 원리, 동작 예시, 시간 복잡도, C언어, Java, Python 예시코드,1. 삽입 정렬이란?삽입 정렬은 정렬되지 않은 데이터를 하나씩 가져와 이미 정렬된 부분에 적절한 위치에 삽입하는 방식으로 동작하는 정렬 알고리즘입니다. 간단한 구현과 적은 데이터에서는best-coding..
2025. 1. 3.
버킷 정렬(Bucket Sort) 총 정리 - 개념, 원리, 동작 예시, 시간 복잡도, C언어, Java, Python 예시코드, 장단점, 주의점
버킷 정렬은 데이터를 여러 개의 "버킷"으로 나누고 각 버킷에 저장된 데이터를 정렬한 뒤, 이를 합쳐 최종 정렬을 완성하는 분산 기반 정렬 알고리즘입니다. 데이터가 균등 분포되어 있을수록 높은 효율을 발휘하며, 비교 기반 정렬보다 더 빠를 수 있습니다. 1. 버킷이란?버킷에 대한 자세한 개념은 아래 글에 상세한 예시와 함께 작성했습니다. 버킷 자체만으로도 코딩 테스트에 자주 나오는 개념이라 꼭 숙지하는 것이 중요합니다.2024.12.20 - [알고리즘] - 버킷(Bucket) 알고리즘 - 코딩테스트에서 시간을 단축하는 비법(시간복잡도, C언어,Java,Python 예시코드) 버킷(Bucket) 알고리즘 - 코딩테스트에서 시간을 단축하는 비법(시간복잡도, C언어,Java,Python 예시코코딩테스트 문제..
2025. 1. 3.
기수 정렬 (Radix Sort) 총 정리 - 개념, 원리, 동작 예시, 시간 복잡도, C언어, Java, Python 예시코드, 주의점, 장단점
1. 기수 정렬이란?기수 정렬은 정수를 자리수별로 비교하여 정렬하는 정렬 알고리즘입니다. 가장 낮은 자리수부터 높은 자리수까지 순차적으로 정렬하는 방식(LSD: Least Significant Digit) 또는 높은 자리수부터 낮은 자리수로 정렬하는 방식(MSD: Most Significant Digit)을 사용합니다.계수 정렬을 서브 루틴으로 활용하며, 데이터의 크기와 범위에 따라 매우 효율적입니다. 기수 정렬을 이해하기 위해서는 계수정렬(Counting Sort)에 대한 이해가 선행되어야 합니다.해당 개념은 아래 포스팅에 자세히 정리했습니다.2025.01.02 - [알고리즘] - 계수 정렬 (Counting Sort) 총 정리 - 개념, 원리, 동작 예시, 시간 복잡도, C언어, Java, Pytho..
2025. 1. 2.
계수 정렬 (Counting Sort) 총 정리 - 개념, 원리, 동작 예시, 시간 복잡도, C언어, Java, Python 예시코드, 주의점, 장단점
1. 계수 정렬이란?계수 정렬은 비교 기반이 아닌 정렬 알고리즘으로, 정수 또는 정수로 표현 가능한 데이터의 빈도를 기반으로 정렬합니다. 값의 크기가 제한된 경우 매우 효율적이며, 주로 숫자 범위가 제한적이고 데이터가 중복이 많은 경우에 사용됩니다. 2. 원리정렬할 데이터의 범위를 파악하여 해당 범위의 크기만큼의 카운팅 배열을 생성합니다.데이터의 각 값을 인덱스로 하여 카운팅 배열에 빈도를 저장합니다.카운팅 배열을 누적 합으로 변환하여 정렬된 위치를 결정합니다.원본 배열을 순회하며 데이터를 정렬된 위치에 삽입합니다. 3. 동작 예시 (구체적인 설명)정렬할 배열: [4, 2, 2, 8, 3, 3, 1]카운팅 배열 생성:데이터의 최대값 8을 기준으로 크기 9의 카운팅 배열 생성(데이터 크기 범위가 [0,..
2025. 1. 2.