정렬 알고리즘의 성능 비교


알고리즘 

최선 

평균 

최악 

삽입 정렬

O(n) 

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^1.5)

 O(n^1.5) 

퀵 정렬 

 O(nlog 2n)

O(nlog 2n)

 O(n^2) 

힙 정렬

  O(nlog 2n)

 O(nlog 2n) 

  O(nlog 2n)

 합병 정렬

  O(nlog 2n)

 O(nlog 2n)

  O(nlog 2n)

 기수 정렬

 O(dn)

 O(dn) 

 O(dn) 

- 최적의 정렬 방법은 정렬해야 할 데이터의 수, 크기, 타입에 따라 달라지므로 정렬 방법들의 장단점을 잘 이해하여 적합한 정렬을 사용할 수 있어야 합니다.



정렬 알고리즘별 실험 결과

- 정수 60000개 정렬


 알고리즘

실행시간 (단위 : 초) 

 삽입 정렬

7.438 

 선택 정렬

10.842

 버블 정렬

22.894

 쉘 정렬

0.056

 힙 정렬

0.034

 합병 정렬

 0.026

 퀵 정렬

 0.014

- 삽입, 선택, 버블 정렬은 정렬속도가 느려서 비효율적입니다.



정렬 알고리즘별 안정성, 추가 메모리 필요 여부


 알고리즘

안정성

추가 메모리 필요 

 삽입 정렬

O

 선택 정렬

X

 버블 정렬

X

 쉘 정렬

X

X

 힙 정렬

X

X

 합병 정렬

O

 퀵 정렬

X

X

 기수 정렬

 O

O

- 안정성 있는 정렬 : 같은 값을 가진 데이터의 순서가 정렬 후에도 바뀌지 않고 그대로 유지하는 정렬

'Basics > Data Structure' 카테고리의 다른 글

배열 (Array)  (0) 2014.11.11
연결 리스트 (Linked List)  (0) 2014.11.11
정렬 - 기수정렬  (0) 2014.11.01
정렬 - 힙 정렬  (0) 2014.11.01
정렬 - 퀵 정렬  (0) 2014.11.01
Posted by 긍정왕오킹