2014-11-26 2 views
-3

Jana의 Collections.sort는 어떤 종류의 알고리즘을 사용합니까? 빠른 정렬과 비슷할 수도 있습니다. Java에도 Array.sort가 있습니다. 그들은 다른가요?Java는 어떤 정렬 알고리즘을 채택합니까?

+6

API는 무엇을 말합니까? – trashgod

+0

'Collections.sort'는'Arrays.sort (collection.toArray())'로 전달됩니다. 입력 유형에 따라 여러 알고리즘을 사용합니다 (예 : [TimSort] (http://en.wikipedia.org/wiki/Timsort)). 또는 Java 8에서 멋진 병렬 포크 조인 정렬. – zapl

+0

Java7 및 Java8을 사용 중입니다. 당신의 의견에 감사드립니다. –

답변

0

이러한 모든 종류의 질문에 대해서는 항상 설명서를 시작하는 것이 가장 좋습니다.

Collection.Sort documentation은 "안정적이고 적응력이 뛰어난 반복적 인 mergesort"를 사용하며 "구현은 Tim Peters의 목록 정렬에서 파이썬 (TimSort)을 채택했다"고 명시합니다.

소트 알고리즘은 변성 머지 소트 (낮은 서브리스트에서 가장 높은 소자가 높은 서브리스트에 낮은 소자보다 작은 경우, 머지 생략 이다)이다. Array documentation

구현상의주의에서

는 : 소트 알고리즘은 블라디미르 Yaroslavskiy, 존 벤틀리, 조슈아 블로흐하여 듀얼 피벗 퀵 입니다. 이 알고리즘은 다른 퀵 소트가 2 차 성능으로 저하되는 많은 데이터 세트에서 O (n log (n)) 성능을 제공하며 일반적으로 기존 (1 피벗) Quicksort 구현보다 더 빠른 입니다.

+1

더 최신의 문서에 링크하는 것이 좋습니다. Java 7 [대체 된 mergesort 대체] (https://bugs.openjdk.java.net/browse/JDK-6804124) 및 [documentation] (http://docs.oracle.com/) com/javase/7/docs/api/java/util/Collections.html # sort % 28java.util.List % 29)가 구현 정보를 변경했습니다. – zapl

+0

와우. 머리를 가져 주셔서 감사합니다. –

+0

정말 고마워요. 먼저 문서를 확인해야합니다. –

관련 문제