SlideShare a Scribd company logo
Algorithm
Sorting Comparison
Bill Kim(김정훈) | ibillkim@gmail.com
목차
•Introduction
•Sorting Algorithms
•Sorting Kinds
•Space Complexity
•Time Complexity
•References
Introduction
본 문서는 컴퓨터 과학에서 사용되는 정렬 알고리즘들에 대한 큰 특
징들을 살펴보며 각 알고리즘 별로 공간 및 시간 복잡도에 대해서
서로 비교를 해봅니다.
Sorting Algorithms
정렬 알고리즘은 크게 보면 형태나 방법에 따라 아래와 같이 분류
될 수 있습니다.
Sorting Kinds
버블정렬(Bubble Sort)
특성 설명
형태 안정 정렬, 내부 정렬
정렬 방법 이중 루프를 돌며 모든 인접값끼리 비교
장점 코드 구현이 쉽고 직관적이다.
단점 모든 인접값을 비교하므로 굉장히 비효율적
공간 복잡도 O(1)
시간 복잡도 최악 : O(n^2), 최선 : Ω(n), 평균 : Θ(n^2)
Sorting Kinds
선택정렬(Selection Sort)
특성 설명
형태 불안정 정렬, 내부 정렬
정렬 방법 데이터 중 최소값을 선택한 후 제일 앞자리와 바꾸며 정렬
장점
코드 구현이 쉽고 데이터가 적을때 비교적 효율적, 데이터 크기와 상관
없이 일정한 시간 복잡도를 가짐
단점 버블 정렬보다는 일반적으로 2-3배 빠르지만 그래도 느림
공간 복잡도 O(1)
시간 복잡도 최악 : O(n^2), 최선 : Ω(n^2), 평균 : Θ(n^2)
Sorting Kinds
삽입정렬(Insertion Sort)
특성 설명
형태 안정 정렬, 내부 정렬
정렬 방법 특정 데이터 선택 후 별도 공간에 삽입하면서 데이터 비교
장점 최선의 경우는 O(n)의 빠른 효율성을 지님
단점 데이터의 상태와 크기에 따라서 최악의 경우 O(n^2) 속도를 보임
공간 복잡도 O(1)
시간 복잡도 최악 : O(n^2), 최선 : Ω(n), 평균 : Θ(n^2)
Sorting Kinds
퀵 정렬(Quick Sort)
특성 설명
형태 불안정 정렬, 내부 정렬
정렬 방법 기준값(Pivot)을 정하고 분할, 정복을 통하여 정렬
장점 실제 사용 환경에서 가장 빠르다고 알려져 많이 사용됨
단점 최악의 경우는 n^2의 속도를 가짐, Pivot 선택에 따른 편차가 큼
공간 복잡도 O(nlogn)
시간 복잡도 최악 : O(n^2), 최선 : Ω(nlogn), 평균 : Θ(nlogn)
Sorting Kinds
병합정렬(Merge Sort)
특성 설명
형태 안정 정렬, 외부 정렬
정렬 방법 데이터를 분할 정복을 활용하여 정렬, 대표적인 분할정복 정렬
장점
퀵 정렬과 비슷한 O(logn)의 시간이 걸림, Pivot 선택 과정이 없으므
로 항상 일정한 속도를 가짐, 가장 많이 사용되는 알고리즘
단점 추가적인 메모리가 많이 필요함
공간 복잡도 O(n)
시간 복잡도 최악 : O(nlogn), 최선 : Ω(nlogn), 평균 : Θ(nlogn)
Sorting Kinds
힙 정렬(Heap Sort)
특성 설명
형태 불안정 정렬, 내부 정렬
정렬 방법 최대힙 트리를 사용한 정렬 알고리즘
장점
추가적인 공간을 필요로하지 않으면서 항상 O(nlogn)의 시간복잡도를
가짐
단점
데이터 상태에 따라서 퀵정렬 등 다른 정렬법보다 조금 느린편이다. 또
한 안정성도 보장받지 못하는 단점이 있음
공간 복잡도 O(1)
시간 복잡도 최악 : O(nlogn), 최선 : Ω(nlogn), 평균 : Θ(nlogn)
Sorting Kinds
쉘 정렬(Shell Sort)
특성 설명
형태 불안정 정렬, 내부 정렬
정렬 방법
삽입 정렬의 단점을 보완해서 만든 정렬 알고리즘, 일정한 간격의 그룹
을 만든 후 삽입 정렬을 통해 정렬
장점 삽입 정렬보다 훨씬 뛰어난 성능을 가짐
단점
간격에 따라서 시간복잡도가 결정되며 간격 설정에 따라서 성능이 안
좋을 수 있음
공간 복잡도 O(1)
시간 복잡도 최악 : O(nlogn), 최선 : Ω(nlogn), 평균 : Θ(nlogn)
Sorting Kinds
기수정렬(Radix Sort)
특성 설명
형태 안정 정렬, 내부 정렬
정렬 방법 데이터의 자릿수(Radix) 기준으로 정렬하는 알고리즘
장점 데이터 비교를 하지 않고 O(n)의 속도를 가짐
단점
버킷이라는 추가적인 메모리가 필요함. 또한 데이터 타입이 일정한 경
우에만 사용 가능
공간 복잡도 O(n+k)
시간 복잡도 최악 : O(nk), 최선 : Ω(nk), 평균 : Θ(nk)
Sorting Kinds
카운팅정렬(Counting Sort)
특성 설명
형태 안정 정렬, 내부 정렬
정렬 방법
데이터 비교 없이 데이터의 최대값의 수만큼의 카운팅 배열을 만들고
카운트를 통하여 정렬하는 알고리즘
장점 데이터 비교를 하지 않고 O(n)의 속도를 가짐
단점
기본적으로 숫자의 최대 수만큼의 별도의 추가 공간이 필요함. 데이터
에 따라서 비효율적인 공간 낭비가 있을 수 있음.
공간 복잡도 O(k)
시간 복잡도 최악 : O(n+k), 최선 : Ω(n+k), 평균 : Θ(n+k)
지금까지 살펴본 정렬 알고리즘들의 공간 복잡도를 다시 한번 비교
해보겠습니다.
Space Complexity
특성 공간복잡도
버블정렬 O(1)
선택정렬 O(1)
삽입정렬 O(1)
퀵 정렬 O(nlogn)
병합정렬 O(n)
힙 정렬 O(1)
쉘 정렬 O(1)
기수정렬 O(n+k)
카운팅정렬 O(k)
마찬가지로 지금까지 살펴본 정렬 알고리즘들의 시간 복잡도를 다
시 한번 비교해보겠습니다.
Time Complexity
특성 최악(Worst) 평균(Average) 최선(Best)
버블정렬 O(n^2) O(n^2) O(n^2)
선택정렬 O(n^2) O(n^2) O(n^2)
삽입정렬 O(n^2) O(n^2) O(n)
퀵 정렬 O(n^2) O(nlogn) O(nlogn)
병합정렬 O(nlogn) O(nlogn) O(nlogn)
힙 정렬 O(nlogn) O(nlogn) O(nlogn)
쉘 정렬 O(n^2) O(nk) = O(n) O(nlogn)
기수정렬 O(nk) = O(n) O(nk) = O(n) O(nk) = O(n)
카운팅정렬 O(n+k) = O(n) O(n+k) = O(n) O(n+k) = O(n)
References
[1] 정렬 알고리즘 비교 : https://ratsgo.github.io/
data%20structure&algorithm/2017/10/19/sort/
[2] [ 정렬 ] 정렬별 장단점 및 시간복잡도 : https://
yabmoons.tistory.com/250
[3] [C언어] 여러가지 정렬 속도 비교(정렬의 시간복잡도) :
https://coding-factory.tistory.com/138
[4] 정렬 알고리즘의 종류 및 속도 비교 : https://
moyaria.tistory.com/1399
[5] 정렬 알고리즘(Sorting Algorithm) | 종류 및 속도 비교 :
https://m.blog.naver.com/go2604/221824669394
References
[6] 정렬 알고리즘의 비교 : https://wonjayk.tistory.com/225
[7] 정렬 알고리즘 비교 : https://defacto-
standard.tistory.com/37
[8] 정렬 알고리즘 (Sorting Algorithm) : https://
2heedu.tistory.com/160
[9] 정렬 알고리즘 정리 : https://medium.com/
@wooder2050/정렬-알고리즘-정리-54349222f432
[10] 제 2 강. 알고리즘과 알고리즘의 성능
: http://dblab.duksung.ac.kr/ds/pdf/Chap02.pdf
References
[11] [Algorithm] Time Complexity : https://velog.io/
@junyong92/TIL-Time-Complexity
[12] [알고리즘] 점근적 표기법 : https://
satisfactoryplace.tistory.com/70
Thank you!
Ad

Recommended

[GEG1] 3.volumetric representation of virtual environments
[GEG1] 3.volumetric representation of virtual environments
종빈 오
 
Graph
Graph
GNGLB
 
컴퓨터개론09
컴퓨터개론09
Edward Hwang
 
Data Structures
Data Structures
skku_npc
 
Rnn개념정리
Rnn개념정리
종현 최
 
Convolutional neural networks
Convolutional neural networks
HyunjinBae3
 
자료구조 Project5
자료구조 Project5
KoChungWook
 
Dl from scratch(7)
Dl from scratch(7)
Park Seong Hyeon
 
알고리즘 스터디(정렬) Seungdols
알고리즘 스터디(정렬) Seungdols
seungdols
 
6. Sorting
6. Sorting
Melon Lemon
 
06. sorting
06. sorting
승혁 조
 
[11 0212] 정렬, 선택, 탐색 알고리즘
[11 0212] 정렬, 선택, 탐색 알고리즘
SeungMin Yang
 
2007 Icpc2
2007 Icpc2
yonsei
 
[데브루키]노대영_알고리즘 스터디
[데브루키]노대영_알고리즘 스터디
대영 노
 
amugona study 2nd
amugona study 2nd
who7117
 
정렬 알고리즘 작동 방식 및 예시 발표 & GPT 코드 비교 진행.pptx
정렬 알고리즘 작동 방식 및 예시 발표 & GPT 코드 비교 진행.pptx
koi312500
 
정렬 알고리즘의 성능 분석
정렬 알고리즘의 성능 분석
Young-jun Jeong
 
Shell, merge, heap sort
Shell, merge, heap sort
Hyun Jin Moon
 
Quick sort
Quick sort
HyungjunJu
 
코딩테스트 합격자 되기 C++ 13장 정렬(sorting)에 대한 강의 자료 입니다.
코딩테스트 합격자 되기 C++ 13장 정렬(sorting)에 대한 강의 자료 입니다.
ultrasuperrok
 
알고리즘
알고리즘
승우 백
 
[Algorithm] Insertion Sort
[Algorithm] Insertion Sort
Bill Kim
 
[Algorithm] Selection Sort
[Algorithm] Selection Sort
Bill Kim
 
Algorithms summary korean
Algorithms summary korean
Young-Min kang
 
Data and Sorting Algoritm
Data and Sorting Algoritm
Minsuk Lee
 
퀵 정렬 알고리즘 기초
퀵 정렬 알고리즘 기초
Dongyi Kim
 
[SOPT] 데이터 구조 및 알고리즘 스터디 - #03 : 정렬 (기본, 효율, 초효율
[SOPT] 데이터 구조 및 알고리즘 스터디 - #03 : 정렬 (기본, 효율, 초효율
S.O.P.T - Shout Our Passion Together
 
[Algorithm] Big O Notation
[Algorithm] Big O Notation
Bill Kim
 
[Algorithm] Shell Sort
[Algorithm] Shell Sort
Bill Kim
 

More Related Content

Similar to [Algorithm] Sorting Comparison (20)

알고리즘 스터디(정렬) Seungdols
알고리즘 스터디(정렬) Seungdols
seungdols
 
6. Sorting
6. Sorting
Melon Lemon
 
06. sorting
06. sorting
승혁 조
 
[11 0212] 정렬, 선택, 탐색 알고리즘
[11 0212] 정렬, 선택, 탐색 알고리즘
SeungMin Yang
 
2007 Icpc2
2007 Icpc2
yonsei
 
[데브루키]노대영_알고리즘 스터디
[데브루키]노대영_알고리즘 스터디
대영 노
 
amugona study 2nd
amugona study 2nd
who7117
 
정렬 알고리즘 작동 방식 및 예시 발표 & GPT 코드 비교 진행.pptx
정렬 알고리즘 작동 방식 및 예시 발표 & GPT 코드 비교 진행.pptx
koi312500
 
정렬 알고리즘의 성능 분석
정렬 알고리즘의 성능 분석
Young-jun Jeong
 
Shell, merge, heap sort
Shell, merge, heap sort
Hyun Jin Moon
 
Quick sort
Quick sort
HyungjunJu
 
코딩테스트 합격자 되기 C++ 13장 정렬(sorting)에 대한 강의 자료 입니다.
코딩테스트 합격자 되기 C++ 13장 정렬(sorting)에 대한 강의 자료 입니다.
ultrasuperrok
 
알고리즘
알고리즘
승우 백
 
[Algorithm] Insertion Sort
[Algorithm] Insertion Sort
Bill Kim
 
[Algorithm] Selection Sort
[Algorithm] Selection Sort
Bill Kim
 
Algorithms summary korean
Algorithms summary korean
Young-Min kang
 
Data and Sorting Algoritm
Data and Sorting Algoritm
Minsuk Lee
 
퀵 정렬 알고리즘 기초
퀵 정렬 알고리즘 기초
Dongyi Kim
 
[SOPT] 데이터 구조 및 알고리즘 스터디 - #03 : 정렬 (기본, 효율, 초효율
[SOPT] 데이터 구조 및 알고리즘 스터디 - #03 : 정렬 (기본, 효율, 초효율
S.O.P.T - Shout Our Passion Together
 
알고리즘 스터디(정렬) Seungdols
알고리즘 스터디(정렬) Seungdols
seungdols
 
[11 0212] 정렬, 선택, 탐색 알고리즘
[11 0212] 정렬, 선택, 탐색 알고리즘
SeungMin Yang
 
2007 Icpc2
2007 Icpc2
yonsei
 
[데브루키]노대영_알고리즘 스터디
[데브루키]노대영_알고리즘 스터디
대영 노
 
amugona study 2nd
amugona study 2nd
who7117
 
정렬 알고리즘 작동 방식 및 예시 발표 & GPT 코드 비교 진행.pptx
정렬 알고리즘 작동 방식 및 예시 발표 & GPT 코드 비교 진행.pptx
koi312500
 
정렬 알고리즘의 성능 분석
정렬 알고리즘의 성능 분석
Young-jun Jeong
 
Shell, merge, heap sort
Shell, merge, heap sort
Hyun Jin Moon
 
코딩테스트 합격자 되기 C++ 13장 정렬(sorting)에 대한 강의 자료 입니다.
코딩테스트 합격자 되기 C++ 13장 정렬(sorting)에 대한 강의 자료 입니다.
ultrasuperrok
 
[Algorithm] Insertion Sort
[Algorithm] Insertion Sort
Bill Kim
 
[Algorithm] Selection Sort
[Algorithm] Selection Sort
Bill Kim
 
Algorithms summary korean
Algorithms summary korean
Young-Min kang
 
Data and Sorting Algoritm
Data and Sorting Algoritm
Minsuk Lee
 
퀵 정렬 알고리즘 기초
퀵 정렬 알고리즘 기초
Dongyi Kim
 
[SOPT] 데이터 구조 및 알고리즘 스터디 - #03 : 정렬 (기본, 효율, 초효율
[SOPT] 데이터 구조 및 알고리즘 스터디 - #03 : 정렬 (기본, 효율, 초효율
S.O.P.T - Shout Our Passion Together
 

More from Bill Kim (20)

[Algorithm] Big O Notation
[Algorithm] Big O Notation
Bill Kim
 
[Algorithm] Shell Sort
[Algorithm] Shell Sort
Bill Kim
 
[Algorithm] Radix Sort
[Algorithm] Radix Sort
Bill Kim
 
[Algorithm] Quick Sort
[Algorithm] Quick Sort
Bill Kim
 
[Algorithm] Heap Sort
[Algorithm] Heap Sort
Bill Kim
 
[Algorithm] Counting Sort
[Algorithm] Counting Sort
Bill Kim
 
[Algorithm] Merge Sort
[Algorithm] Merge Sort
Bill Kim
 
[Algorithm] Bubble Sort
[Algorithm] Bubble Sort
Bill Kim
 
[Algorithm] Binary Search
[Algorithm] Binary Search
Bill Kim
 
[Algorithm] Recursive(재귀)
[Algorithm] Recursive(재귀)
Bill Kim
 
[Swift] Data Structure - AVL
[Swift] Data Structure - AVL
Bill Kim
 
[Swift] Data Structure - Binary Search Tree
[Swift] Data Structure - Binary Search Tree
Bill Kim
 
[Swift] Data Structure - Graph(BFS)
[Swift] Data Structure - Graph(BFS)
Bill Kim
 
[Swift] Data Structure - Graph(DFS)
[Swift] Data Structure - Graph(DFS)
Bill Kim
 
[Swift] Data Structure - Binary Tree
[Swift] Data Structure - Binary Tree
Bill Kim
 
[Swift] Data Structure - Tree
[Swift] Data Structure - Tree
Bill Kim
 
[Swift] Data Structure - Graph
[Swift] Data Structure - Graph
Bill Kim
 
[Swift] Data Structure - Heap
[Swift] Data Structure - Heap
Bill Kim
 
[Swift] Data Structure - Dequeue
[Swift] Data Structure - Dequeue
Bill Kim
 
[Swift] Data Structure - Stack
[Swift] Data Structure - Stack
Bill Kim
 
[Algorithm] Big O Notation
[Algorithm] Big O Notation
Bill Kim
 
[Algorithm] Shell Sort
[Algorithm] Shell Sort
Bill Kim
 
[Algorithm] Radix Sort
[Algorithm] Radix Sort
Bill Kim
 
[Algorithm] Quick Sort
[Algorithm] Quick Sort
Bill Kim
 
[Algorithm] Heap Sort
[Algorithm] Heap Sort
Bill Kim
 
[Algorithm] Counting Sort
[Algorithm] Counting Sort
Bill Kim
 
[Algorithm] Merge Sort
[Algorithm] Merge Sort
Bill Kim
 
[Algorithm] Bubble Sort
[Algorithm] Bubble Sort
Bill Kim
 
[Algorithm] Binary Search
[Algorithm] Binary Search
Bill Kim
 
[Algorithm] Recursive(재귀)
[Algorithm] Recursive(재귀)
Bill Kim
 
[Swift] Data Structure - AVL
[Swift] Data Structure - AVL
Bill Kim
 
[Swift] Data Structure - Binary Search Tree
[Swift] Data Structure - Binary Search Tree
Bill Kim
 
[Swift] Data Structure - Graph(BFS)
[Swift] Data Structure - Graph(BFS)
Bill Kim
 
[Swift] Data Structure - Graph(DFS)
[Swift] Data Structure - Graph(DFS)
Bill Kim
 
[Swift] Data Structure - Binary Tree
[Swift] Data Structure - Binary Tree
Bill Kim
 
[Swift] Data Structure - Tree
[Swift] Data Structure - Tree
Bill Kim
 
[Swift] Data Structure - Graph
[Swift] Data Structure - Graph
Bill Kim
 
[Swift] Data Structure - Heap
[Swift] Data Structure - Heap
Bill Kim
 
[Swift] Data Structure - Dequeue
[Swift] Data Structure - Dequeue
Bill Kim
 
[Swift] Data Structure - Stack
[Swift] Data Structure - Stack
Bill Kim
 
Ad

[Algorithm] Sorting Comparison

  • 3. Introduction 본 문서는 컴퓨터 과학에서 사용되는 정렬 알고리즘들에 대한 큰 특 징들을 살펴보며 각 알고리즘 별로 공간 및 시간 복잡도에 대해서 서로 비교를 해봅니다.
  • 4. Sorting Algorithms 정렬 알고리즘은 크게 보면 형태나 방법에 따라 아래와 같이 분류 될 수 있습니다.
  • 5. Sorting Kinds 버블정렬(Bubble Sort) 특성 설명 형태 안정 정렬, 내부 정렬 정렬 방법 이중 루프를 돌며 모든 인접값끼리 비교 장점 코드 구현이 쉽고 직관적이다. 단점 모든 인접값을 비교하므로 굉장히 비효율적 공간 복잡도 O(1) 시간 복잡도 최악 : O(n^2), 최선 : Ω(n), 평균 : Θ(n^2)
  • 6. Sorting Kinds 선택정렬(Selection Sort) 특성 설명 형태 불안정 정렬, 내부 정렬 정렬 방법 데이터 중 최소값을 선택한 후 제일 앞자리와 바꾸며 정렬 장점 코드 구현이 쉽고 데이터가 적을때 비교적 효율적, 데이터 크기와 상관 없이 일정한 시간 복잡도를 가짐 단점 버블 정렬보다는 일반적으로 2-3배 빠르지만 그래도 느림 공간 복잡도 O(1) 시간 복잡도 최악 : O(n^2), 최선 : Ω(n^2), 평균 : Θ(n^2)
  • 7. Sorting Kinds 삽입정렬(Insertion Sort) 특성 설명 형태 안정 정렬, 내부 정렬 정렬 방법 특정 데이터 선택 후 별도 공간에 삽입하면서 데이터 비교 장점 최선의 경우는 O(n)의 빠른 효율성을 지님 단점 데이터의 상태와 크기에 따라서 최악의 경우 O(n^2) 속도를 보임 공간 복잡도 O(1) 시간 복잡도 최악 : O(n^2), 최선 : Ω(n), 평균 : Θ(n^2)
  • 8. Sorting Kinds 퀵 정렬(Quick Sort) 특성 설명 형태 불안정 정렬, 내부 정렬 정렬 방법 기준값(Pivot)을 정하고 분할, 정복을 통하여 정렬 장점 실제 사용 환경에서 가장 빠르다고 알려져 많이 사용됨 단점 최악의 경우는 n^2의 속도를 가짐, Pivot 선택에 따른 편차가 큼 공간 복잡도 O(nlogn) 시간 복잡도 최악 : O(n^2), 최선 : Ω(nlogn), 평균 : Θ(nlogn)
  • 9. Sorting Kinds 병합정렬(Merge Sort) 특성 설명 형태 안정 정렬, 외부 정렬 정렬 방법 데이터를 분할 정복을 활용하여 정렬, 대표적인 분할정복 정렬 장점 퀵 정렬과 비슷한 O(logn)의 시간이 걸림, Pivot 선택 과정이 없으므 로 항상 일정한 속도를 가짐, 가장 많이 사용되는 알고리즘 단점 추가적인 메모리가 많이 필요함 공간 복잡도 O(n) 시간 복잡도 최악 : O(nlogn), 최선 : Ω(nlogn), 평균 : Θ(nlogn)
  • 10. Sorting Kinds 힙 정렬(Heap Sort) 특성 설명 형태 불안정 정렬, 내부 정렬 정렬 방법 최대힙 트리를 사용한 정렬 알고리즘 장점 추가적인 공간을 필요로하지 않으면서 항상 O(nlogn)의 시간복잡도를 가짐 단점 데이터 상태에 따라서 퀵정렬 등 다른 정렬법보다 조금 느린편이다. 또 한 안정성도 보장받지 못하는 단점이 있음 공간 복잡도 O(1) 시간 복잡도 최악 : O(nlogn), 최선 : Ω(nlogn), 평균 : Θ(nlogn)
  • 11. Sorting Kinds 쉘 정렬(Shell Sort) 특성 설명 형태 불안정 정렬, 내부 정렬 정렬 방법 삽입 정렬의 단점을 보완해서 만든 정렬 알고리즘, 일정한 간격의 그룹 을 만든 후 삽입 정렬을 통해 정렬 장점 삽입 정렬보다 훨씬 뛰어난 성능을 가짐 단점 간격에 따라서 시간복잡도가 결정되며 간격 설정에 따라서 성능이 안 좋을 수 있음 공간 복잡도 O(1) 시간 복잡도 최악 : O(nlogn), 최선 : Ω(nlogn), 평균 : Θ(nlogn)
  • 12. Sorting Kinds 기수정렬(Radix Sort) 특성 설명 형태 안정 정렬, 내부 정렬 정렬 방법 데이터의 자릿수(Radix) 기준으로 정렬하는 알고리즘 장점 데이터 비교를 하지 않고 O(n)의 속도를 가짐 단점 버킷이라는 추가적인 메모리가 필요함. 또한 데이터 타입이 일정한 경 우에만 사용 가능 공간 복잡도 O(n+k) 시간 복잡도 최악 : O(nk), 최선 : Ω(nk), 평균 : Θ(nk)
  • 13. Sorting Kinds 카운팅정렬(Counting Sort) 특성 설명 형태 안정 정렬, 내부 정렬 정렬 방법 데이터 비교 없이 데이터의 최대값의 수만큼의 카운팅 배열을 만들고 카운트를 통하여 정렬하는 알고리즘 장점 데이터 비교를 하지 않고 O(n)의 속도를 가짐 단점 기본적으로 숫자의 최대 수만큼의 별도의 추가 공간이 필요함. 데이터 에 따라서 비효율적인 공간 낭비가 있을 수 있음. 공간 복잡도 O(k) 시간 복잡도 최악 : O(n+k), 최선 : Ω(n+k), 평균 : Θ(n+k)
  • 14. 지금까지 살펴본 정렬 알고리즘들의 공간 복잡도를 다시 한번 비교 해보겠습니다. Space Complexity 특성 공간복잡도 버블정렬 O(1) 선택정렬 O(1) 삽입정렬 O(1) 퀵 정렬 O(nlogn) 병합정렬 O(n) 힙 정렬 O(1) 쉘 정렬 O(1) 기수정렬 O(n+k) 카운팅정렬 O(k)
  • 15. 마찬가지로 지금까지 살펴본 정렬 알고리즘들의 시간 복잡도를 다 시 한번 비교해보겠습니다. Time Complexity 특성 최악(Worst) 평균(Average) 최선(Best) 버블정렬 O(n^2) O(n^2) O(n^2) 선택정렬 O(n^2) O(n^2) O(n^2) 삽입정렬 O(n^2) O(n^2) O(n) 퀵 정렬 O(n^2) O(nlogn) O(nlogn) 병합정렬 O(nlogn) O(nlogn) O(nlogn) 힙 정렬 O(nlogn) O(nlogn) O(nlogn) 쉘 정렬 O(n^2) O(nk) = O(n) O(nlogn) 기수정렬 O(nk) = O(n) O(nk) = O(n) O(nk) = O(n) 카운팅정렬 O(n+k) = O(n) O(n+k) = O(n) O(n+k) = O(n)
  • 16. References [1] 정렬 알고리즘 비교 : https://ratsgo.github.io/ data%20structure&algorithm/2017/10/19/sort/ [2] [ 정렬 ] 정렬별 장단점 및 시간복잡도 : https:// yabmoons.tistory.com/250 [3] [C언어] 여러가지 정렬 속도 비교(정렬의 시간복잡도) : https://coding-factory.tistory.com/138 [4] 정렬 알고리즘의 종류 및 속도 비교 : https:// moyaria.tistory.com/1399 [5] 정렬 알고리즘(Sorting Algorithm) | 종류 및 속도 비교 : https://m.blog.naver.com/go2604/221824669394
  • 17. References [6] 정렬 알고리즘의 비교 : https://wonjayk.tistory.com/225 [7] 정렬 알고리즘 비교 : https://defacto- standard.tistory.com/37 [8] 정렬 알고리즘 (Sorting Algorithm) : https:// 2heedu.tistory.com/160 [9] 정렬 알고리즘 정리 : https://medium.com/ @wooder2050/정렬-알고리즘-정리-54349222f432 [10] 제 2 강. 알고리즘과 알고리즘의 성능 : http://dblab.duksung.ac.kr/ds/pdf/Chap02.pdf
  • 18. References [11] [Algorithm] Time Complexity : https://velog.io/ @junyong92/TIL-Time-Complexity [12] [알고리즘] 점근적 표기법 : https:// satisfactoryplace.tistory.com/70