2013-03-11 2 views
4

또는 다른 O (N.logN) 정렬 jdk 표준 라이브러리에서 사용할 수 있습니까? 자체에 부착 사양으로 너무 오래,Quicksort 또는 O (N.logN) 정렬에서 jdk

하는 구현이 다른 알고리즘을 자유롭게 :

Collections 클래스는 희망을 가져 오지 않습니다. (예를 들어, sort가 사용하는 알고리즘은 머지 소트 일 필요는 없습니다, 그러나 그것은 안정 될 필요가 없습니다.)

Collections.sort()는 단서 제공하지 않습니다 :

종류 (목록 < T를 > list) 요소의 자연 순서에 따라 지정된 목록을 오름차순으로 정렬합니다.

+1

확인 @stackoverflow.com/questions/753237/what-sort-does-java-collections-sortnodes-use –

+1

@JonathanDrapeau 지적 해 주셔서 고맙습니다. Timsort에 대해 읽은 것을 기억하지만 그것에 대해 잊어 버렸습니다. http://en.wikipedia.org/wiki/Timsort, 최근에는 그러한 혁신이 나타나기를 항상 인상적입니다 (2002) –

답변

1

정렬 기준은 Arrays.sort입니다. 정렬 방법은 유형에 따라 다르므로 JavaDoc을 읽는 것은 그리 명확하지 않습니다. 수정 된 병합 정렬 또는 임계 값에 따라 조정 된 퀵 : 여기

/** 
* Tuning parameter: list size at or below which insertion sort will be 
* used in preference to mergesort or quicksort. 
*/ 
private static final int INSERTIONSORT_THRESHOLD = 7; 

은 퀵와 머지 소트를 비교하는 게시물입니다 : Quick Sort Vs Merge Sort

결론 : 당신이 정말 당신이 무엇을하고 있는지 알지 못한다면 Java 구현을 신뢰합니다.

2

Collections.sort은 모든 경우에 실제로 O (n log n)을 보장하는 안정된 병합 정렬이며 안정적입니다. link.