💻
ComputerScience
  • 목차
  • Operating System
    • 운영체제란
    • 프로세스 vs 스레드
    • 프로세스 주소 공간
    • 인터럽트(Interrupt)
    • 시스템 콜(System Call)
    • PCB와 Context Switching
    • IPC(Inter Process Communication)
    • CPU 스케줄링
    • 데드락(DeadLock)
    • Race Condition
    • 세마포어(Semaphore) & 뮤텍스(Mutex)
    • 페이징 & 세그먼테이션
    • 페이지 교체 알고리즘
    • 메모리(Memory)
    • 파일 시스템
  • Network
    • OSI 7 계층
    • TCP 3 way handshake & 4 way handshake
    • TCP/IP 흐름제어 & 혼잡제어
    • UDP
    • 대칭키 & 공개키
    • HTTP & HTTPS
    • TLS/SSL handshake
    • 로드 밸런싱(Load Balancing)
    • Blocking,Non-blocking & Synchronous,Asynchronous @LifesLike
    • Blocking & Non-Blocking I/O
  • Algorithm
    • 거품 정렬(Bubble Sort)
    • 선택 정렬(Selection Sort)
    • 삽입 정렬(Insertion Sort)
    • 퀵 정렬(Quick Sort) @mimwin
    • 병합 정렬(Merge Sort)
    • 힙 정렬(Heap Sort)
    • 기수 정렬(Radix Sort)
    • 계수 정렬(Count Sort)
    • 이분 탐색(Binary Search)
    • 해시 테이블 구현
    • DFS & BFS @sujin-kk
    • 최장 증가 수열(LIS)
    • 최소 공통 조상(LCA)
    • 동적 계획법(Dynamic Programming)
    • 다익스트라(Dijkstra) 알고리즘
    • 비트마스크(BitMask)
  • Database
    • 키(Key) 정리
    • SQL - JOIN
    • SQL Injection
    • SQL vs NoSQL
    • 정규화(Nomalization)
    • 이상(Anomaly)
    • 인덱스(INDEX)
    • 트랜잭션(Transaction)
    • 트랜잭션 격리 수준(Transaction Isolation Level)
    • 저장 프로시저(Stored PROCEDURE)
    • 레디스(Redis) @sujin-kk
  • Java
    • Java 컴파일 과정
    • Call by Value vs Call by Reference
    • String & StringBuffer & StringBuilder
    • 자바 가상 머신(Java Virtual Machine)
    • Casting(업캐스팅 & 다운캐스팅)
    • 오토 박싱 & 오토언박싱
    • Thread 활용
    • 고유 락(Intrinsic Lock)
    • 문자열 클래스
    • Garbage Collection
    • Promotion & Casting
    • Primitive type & Reference type
    • 직렬화(Serialization)
    • Error & Exception
    • Stream API
    • Record
    • Composition
Powered by GitBook
On this page
  • 정렬 과정
  • 정렬 방식
  • LSD
  • MSD
  1. Algorithm

기수 정렬(Radix Sort)

Previous힙 정렬(Heap Sort)Next계수 정렬(Count Sort)

Last updated 2 years ago

기수 정렬이란? 데이터를 구성하는 기본 요소 즉 기수 별로 비교 없이 수행하는 정렬 알고리즘이다.

  • 장점

    • 기수로는 정수, 낱말, 천공카드 등 다양한 자료를 사용할 수 있으나 크기가 유한하고 사전순으로 정렬할 수 있어야 한다.

    • 기수 정렬은 정렬 알고리즘의 이론상 성능의 한계인 O(nlog₂n)을 넘어설 수 있는 유일한 알고리즘이다.

  • 단점

    • 자릿수가 없는 것은 정렬할 수 없음. (부동 소숫점)

    • 중간 결과를 저장할 bucket 공간이 필요함.

정렬 과정

  1. 0~9 까지의 Bucket(Queue 자료구조의)을 준비한다.

  2. 모든 데이터에 대하여 가장 낮은 자리수에 해당하는 Bucket에 차례대로 데이터를 둔다.

  3. 0부터 차례대로 버킷에서 데이터를 다시 가져온다.

  4. 가장 높은 자리수를 기준으로 하여 자리수를 높여가며 2번 3번 과정을 반복한다.

참고 주소: https://jeonyeohun.tistory.com/105

전체 시간 복잡도는 O(w(n + k)) ( w는 기수의 크기, k는 기수의 도메인 크기) 보통은 O(dn)(d는 최대 자릿수) -> O(n)으로 본다.

정렬 방식

LSD

작은 자릿수부터 정렬을 진행한다.

같은 길이의 키는 사전순으로 정렬된다.

정렬 이후에도 중복된 값들의 자리가 바뀌지 않는 안정 정렬이다.

MSD

큰 자릿수부터 정렬을 진행한다.

문자열이나 고정 길이 정수 표현에 적합하다.

불안정 정렬이다.

1의 자리 먼저 정렬 후 배열 모습

10의 자리 정렬 후 배열 모습

img
img
img
img
img