2009-12-06 5 views

답변

4

알고리즘은 QuickSort입니다.

출처 : 언급 한 바와 같이

+0

질문 : OP가 .NET 1.1에 대해 특별히 질문하지 않는 한 왜 .NET 1.1 설명서에 대한 링크를 제공합니까? –

+0

@ 존 : 감사합니다. 눈치 채지 못했습니다. 링크가 고정되어 있습니다 ... – CMS

+0

.Net 프레임 워크는 버전 4.5의 간단한 빠른 정렬 대신 Introsort를 사용합니다. http://en.wikipedia.org/wiki/Introsort – gordanvij

1

빠른 종류를 사용합니다. 그러나 모든 데이터가 똑같이 잘되지는 않습니다!

reflector를 사용하여 : 1D 배열의 가장 일반적인 경우 오름차순으로 네이티브 dll에서 정렬합니다. 그러나 다른 경우는 관리 코드에서 정렬되며 거의 최적화가 적용되지 않습니다. 따라서 속도는 일반적으로 훨씬 느립니다.

1

실제로, 보이는 것처럼 쉽지 않습니다. .NET은 입력 및 크기에 따라 다양한 정렬 알고리즘 세트를 구현하는 것 같습니다. 나는 CLR에서 Array.Sort()을 디 컴파일하는 데 사용하고 그들은 힙, 삽입 및 퀵 포트를 사용하고있는 것 같습니다. enter image description here

+0

... 명확하게 여기에 문서화되어 있으므로 https://msdn.microsoft.com/en-us/library /6tf1f0bc.aspx –

12

Array.Sort() 세의 한 입력의 크기에 따라 정렬 알고리즘 선택 : 크기가 16 개 이하의 원소

  1. 경우 삽입 정렬 알고리즘을 사용한다.
  2. 크기가 2 * log^N을 초과하는 경우 (N은 입력 배열의 범위 임) 힙 정렬 알고리즘을 사용합니다.
  3. 그렇지 않으면, 그것은 퀵 알고리즘을

소스를 사용 Array.Sort(Array) Method on MSDN.

+1

해당 주제를 다시 읽어야합니다. 특히 상품 # 2가 잘못되었습니다. * Array.Sort는 대부분의 경우 Quicksort를 사용하도록 설계된 Introsort를 구현합니다 (삽입 정렬을 사용하는 최적화가 추가됨). 작은 파티션의 경우), 항목 순서가 Quicksort에 대한 병리학적인 결과가되는 것을 발견하면 Heapsort로 변경됩니다. –

관련 문제