■ 정렬의 속도 / 메모리 사용 비교
- 미니멈이 1이고, 맥시멈이 백만인 숫자를 입력받아 정렬한다고 할 때, 어떤 정렬을 쓰는게 좋을까....?
- 문제를 풀어본 결과, Merge sort가 가장 빨랐고, 그 다음에 Arrays.sort, 그 다임이 Quck Sort 였다.
- 그럼 Arrays.sort는 무슨 정렬을 사용하는 걸까...
https://www.acmicpc.net/problem/2751
■ Collections와 Arrays의 Sort 메소드가 사용하는 정렬방식
[1] Arrays.sort() : 듀얼 피봇 퀵정렬 (Dual-Pivot QuckSort)
[2] Collections.sort() : Tim 정렬 (삽입 정렬 + 합병정렬을 결합한 방식)
https://sabarada.tistory.com/138
■ 결론
- 위 문제에서는 결국, 병합정렬을 사용할 때 가장 빠르고, 그 다음에 듀얼 피봇 퀵정렬을 사용할 때 빨랐다.
- 퀵 정렬은 오히려 시간이 오래 걸려 시간 초과가 나타났다.
'Computer Science > Algorithm' 카테고리의 다른 글
[기본 알고리즘/자료구조] 소수 나열하기 (0) | 2022.06.02 |
---|---|
[기본 알고리즘/자료구조] 기수 변환하기 (N진수로 변환) (0) | 2022.05.31 |
[정렬] 병합정렬(Merge Sort) (0) | 2022.05.11 |
[정렬] 퀵 정렬(Quick Sort) (0) | 2022.05.10 |
[자료구조] 큐(Queue) (0) | 2022.04.28 |