e.den
eden.dev.log
e.den
전체 방문자
오늘
어제
  • 분류 전체보기 (57)
    • 슬기로운 취준 생활 (1)
    • Study (30)
      • Swift (7)
      • iOS (6)
      • Java (2)
      • Spring (6)
      • Algorithm (9)
    • Coding Test (8)
      • Swea (0)
      • Baekjoon (8)
      • Programmers (0)
    • 삽질기 (3)
    • 독서록 (15)
      • Clean Architecture (5)
      • Clean Code (10)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • CGLayer
  • compactMap
  • 프로퍼티
  • CleanArchitecture
  • RunLoop
  • reduce
  • lifecycle
  • cleancode
  • MySQL
  • UITextView
  • 클린아키텍처
  • mybatis
  • flatmap
  • ios
  • 자료구조
  • 정렬
  • CoreAnimation
  • 클린코드
  • Filter
  • Spring
  • 고차함수
  • property
  • Map
  • 부스트코스
  • 알고리즘
  • swift
  • java
  • initializer
  • lombok
  • Algorithm

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
e.den

eden.dev.log

[정렬] 계수 정렬(Counting Sort)
Study/Algorithm

[정렬] 계수 정렬(Counting Sort)

2020. 4. 16. 16:12

- 원소들의 값이 -O(n) ~ O(n) 범위를 넘지 않는 경우 사용한다. 

- 예를 들어 배열 원소가 {1, 2, 3,..., k}에 속할 때 (k: 상수)

 

계수 정렬 작동 예시

 

다음은 계수 정렬의 알고리즘이다.

countingSort(A, B, n) { // A: 입력배열, B:정렬결과 n: 입력크기 
	for i ← 1 to k // A의 모든 원소는 {1, 2, 3, ..., k} 에 속함
    	C[i] ← 0; 
    for j ← 1 to n 
      	C[A[j]]++; 
    // 이 지점에서 C[i] : 값이 i인 원소의 총 수 
    for i ← 2 to k 
      	C[i] ← C[i] + C[i-1]; 
    // 이 지점에서 C[i] : i 보다 작거나 같은 원소의 총 수 
    for j ← n downto 1 { 
    	B[C[A[j]]] ← A[j]; 
        C[A[j]]--; 
      } 
} 

 

이 정렬의 시간 복잡도는 O(n+k)이다.

데이터가 n일 때, A를 count하며 C에 개수를 업데이트하는 데 O(n)이 걸린다.

C를 가지고 A를 역순으로 훑으며 B를 만들 때도 O(n)이 걸린다.

업데이트 된 C로 직전 요소 값을 현재 요소 값에 더하는 데 k만큼 반복해야 하며 이는 O(k)가 걸린다.

 

따라서, 계수 정렬의 수행 시간은 Θ(n)가 된다. (단, k = O(n)인 경우에 한함)

'Study > Algorithm' 카테고리의 다른 글

선택 알고리즘 (Selection)  (3) 2020.04.25
[정렬] 기수 정렬(Radix Sort)  (5) 2020.04.16
[정렬] 힙 정렬(Heap Sort)  (3) 2020.04.14
[정렬] 퀵 정렬(Quick Sort)  (3) 2020.04.13
[정렬] 병합 정렬(Merge Sort)  (3) 2020.04.13
    'Study/Algorithm' 카테고리의 다른 글
    • 선택 알고리즘 (Selection)
    • [정렬] 기수 정렬(Radix Sort)
    • [정렬] 힙 정렬(Heap Sort)
    • [정렬] 퀵 정렬(Quick Sort)
    e.den
    e.den
    문제를 본질적으로 접근하자

    티스토리툴바